好的,所以我能够解析这个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());
这只是打印第一个“项目”的所有内容,如“标题”,“链接”和“描述”,但我不想要全部,我只想打印“标题”。我在让它完全正常工作方面遇到了问题,但我觉得我很接近。任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
来自org.w3c.dom包上的Oracle documentation:
此属性返回此节点及其后代的文本内容。
您的代码正在getTextContent()
标记上调用item
。如果您修改代码以便从title
标记中检索文本,则它可以正常工作。
System.out.println(myDocument.getElementsByTagName("item").item(0).getFirstChild().getTextContent());
请注意,这取决于title
是item
中的第一个子标记。您可能希望将其更改为更加独立于订单的解决方案。
答案 1 :(得分:0)
下面是一个代码,它遍历整个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();
}
希望有所帮助。