具有NodeList属性的Java XML String(解析)

时间:2014-01-30 21:06:54

标签: java xml parsing nodelist

我有一个字符串,其内容是一个XML文档。

以下是字符串示例。

String xmlContent = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
"<Service oem=\"myOem\" agent=\"myAgent\" version=\"0.5.5.0\" build=\"30-01-2014-11-46\" />";

我想将此字符串转换为NodeList。谷歌搜索引发了这个article

我尝试了以下代码:

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmlContent));
Document doc = db.parse(is);
NodeList oNodeService = doc.getElementsByTagName("Service");

问题是我在“db.parse(is)”行中获得了一个rip。问题似乎是这种方法不支持XML attrihutes。

错误消息是:

[Fatal Error] :1:70: Element type "Service" must be followed by either attribute specifications, ">" or "/>".
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 70; Element type "Service" must be followed by either attribute specifications, ">" or "/>".
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at PkgNetAccelerator32.MainEvents.ShowHtsInfo(MainEvents.java:1575)

如何成功将此XML字符串转换为NodeList?

更新: 嗯,失败是XML字符串特有的。我在上面给了一个缩短的版本。我删除了所有不会导致崩溃的属性。

String xmlContent = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Service hostname=\"sarah-linux.localdomain\"uname=\"Linux sarah-linux.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux\" />";

如果我冒险猜测,我会说它是时期或破折号。我想先得到这个更新。

0 个答案:

没有答案