我在解析Java中的XML文件时遇到了一些麻烦。该文件的形式为:带有重复标签的XPath和Java
<root>
<thing>
<name>Thing1</name>
<property>
<name>Property1</name>
</property>
...
</thing>
...
</root>
最后,我想这个文件转换成的事对象的列表,这将有一个String名称(Thing1)和Property对象的名单,这将各自也有一个名字(Property1)。
我一直在试图使用xpaths来获取这些数据,但是当我试图得到'thing'的名字时,它给了我所有出现在'thing'中的名字,包括那些“酒店的。我的代码是:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(filename);
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression thingExpr = xpath.compile("//thing");
NodeList things = (NodeList)thingExpr.evaluate(dom, XPathConstants.NODESET);
for(int count = 0; count < things.getLength(); count++)
{
Element thing = (Element)things.item(count);
XPathExpression nameExpr = xpath.compile(".//name/text()");
NodeList name = (NodeList) nameExpr.evaluate(thing, XPathConstants.NODESET);
for(int i = 0; i < name.getLength(); i++)
{
System.out.println(name.item(i).getNodeValue());
}
}
任何人都可以帮忙吗?提前致谢!
输出,它似乎并不认为你已经表示要生产使用什么XPath - 即使考虑了评论。 Xpath用于选择我们感兴趣的某些特定节点 - 它们是在您的特定情况下?你想从这些特定节点提取哪些数据?请编辑问题并指定这些缺失和重要的信息。 –