【问题标题】:Parsing XML file Using Java (DOM parser)使用 Java 解析 XML 文件(DOM 解析器)
【发布时间】:2013-12-24 14:14:30
【问题描述】:
好的,所以我已经能够通过这个 xml 文件进行某种解析了。但我无法到达我想要的部分。
http://www.faroo.com/api?q=iphone&start=1&length=10&l=en&src=news&f=rss
这是 xml 的 URL,因为它看起来很丑,刚粘贴在这里。我已经浏览了这个 xml 并将其复制到一个文件中。我需要的部分是第一个“项目”中的“标题”。我已经完成了这段代码:
System.out.println(myDocument.getElementsByTagName("item").item(0).getTextContent());
这只是打印第一个“项目”的所有内容,如“标题”、“链接”和“描述”,但我不想全部打印,我只想打印“标题”。我在让它完全正常工作时遇到问题,但我觉得我很接近了。任何帮助将不胜感激。谢谢。
【问题讨论】:
标签:
java
xml
file
parsing
dom
【解决方案1】:
来自 org.w3c.dom 包上的 Oracle documentation:
此属性返回此节点及其后代的文本内容。
您的代码在item 标记上调用getTextContent()。如果你修改你的代码,让它从title标签中检索文本,它就可以正常工作。
System.out.println(myDocument.getElementsByTagName("item").item(0).getFirstChild().getTextContent());
请注意,这依赖于 title 是 item 中的第一个子标签。您可能希望将其更改为更独立于订单的解决方案。
【解决方案2】:
下面是一个遍历整个 rss 并获取所有标题、链接和描述的代码。您可以创建一个具有标题、链接和描述作为属性的对象,并随意使用它:
try {
File fXmlFile = new File("api.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("item");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("title : " + eElement.getElementsByTagName("title").item(0).getTextContent());
System.out.println("link : " + eElement.getElementsByTagName("link").item(0).getTextContent());
System.out.println("description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
希望对您有所帮助。