我是XML解析的新手,我迷路了。首先,这是我的XML:
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<data>
<food type="none">
<price>100</price>
</food>
<food type="none">
<price>50</price>
</food>
</data>
<trash>
<food type="none" id="1"/>
<food type="none" id="2"/>
</trash>
</menu>
我正在尝试解析这个XML。我想在数据中获取所有食物项目。
当我这样做时:
NodeList nUsines = doc.getElementsByTagName("food");
我还在垃圾中获得食物项目,但我不想这样。
对不起,如果我的问题听起来不对,我不知道XML的正确用语
到目前为止我的代码(在方法内):
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(file.getPath());
doc.getDocumentElement().normalize();
NodeList nUsines = doc.getElementsByTagName("food");
谢谢
答案 0 :(得分:1)
您的代码完全符合您的要求。
您需要更具体的查询,例如food
元素中的data
元素。
您可以尝试选择data
元素,然后在其中专门查询food
元素。
或者,查看XPath,您将很快找到另一种方法来执行此操作。
答案 1 :(得分:0)
使用XPath(只是其中一个选项):
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//data/food");
System.out.println(((NodeList)expr.evaluate(doc, XPathConstants.NODESET)).getLength());