我需要快速帮助解决一个让我疯狂的棘手问题。
String example = "<digitalObject>" +
"<title>title</title>" +
"<creator>Name</creator>" +
"<location>link</location>"+
"<relatedAsset>related realife object</relatedAsset>" +
"<note><src lang =\"en\">value</src></note>" +
"<archivalDate>date</archivalDate>"+
"<mimeFormat>mime type</mimeFormat>"+
"<digitalObjectOwner>owner</digitalObjectOwner>"+
"</digitalObject>";
String example4="<digitalObject>" +
"<title>title</title>"+
"<creator>name</creator>"+
"<location>link</location>"+
"<relatedAsset>related realife object</relatedAsset>" +
"<note><src lang=\"en\">value</src></note>" +
"<archivialDate>date</archivialDate>"+
"<mimeFormat>mime type</mimeFormat>" +
"<digitalObjectOwner>owner</digitalObjectOwner>" +
"</digitalObject>";
以下代码获取w3c.dom.Document对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document doc=null;
try {
builder = factory.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(example4));
doc = builder.parse(is);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
return doc;
}
第一个字符串(示例)被正确解析,第二个字符串(example2)返回null。
知道为什么吗?我真的看不出2 !!
之间的任何区别先谢谢,我确定这是一件让人感到羞耻的事情......
编辑:实际上字符串中的内容相同,仍有2个不同的结果...... 我会尝试区分它们......答案 0 :(得分:2)
你检查过隐形字符吗?我在过去发现xml中有不可见的字符与我期望发送的字符不同。
答案 1 :(得分:1)
您错过了第二个</src>
标记中的note
。
答案 2 :(得分:0)
让计算机完成工作:http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html#difference(java.lang.String,java.lang.String)
如果您希望结构相同但内容不同,则只应在输出中看到内容更改。
答案 3 :(得分:0)
这次可能没有帮助,但我通常会将XML粘贴到Eclipse中的* .xml文件中,然后自动格式化文件(ctrl-shift-f),这使得这样的事情变得更加容易。 / p>
答案 4 :(得分:0)
我知道我会感到羞耻。
拼写错误,archivalDate在一个,archiv i alDate在另一个。
现在请埋葬我......
答案 5 :(得分:0)
喂!你是说the second one (example2)
你确定要解析example4
吗?而不是名为example2
的东西可能是空的?
我测试了你的代码,但我没有得到任何异常。
如果不是这样,我很确定你正在处理第二个xml中不存在的某个节点 - example4
- 例如archivalDate