好的,所以我已经能够解析这个xml文件了。但是我无法到达我想要的部分。
http://www.faroo.com/api?q=iphone&start=1&长度=10&l=en&src=news&f=rss
这是xml的URL,因为刚粘贴在这里看起来很难看。我已经浏览了这个xml并将其复制到一个文件中。我需要的部分是第一个"项目"中的"标题"。我已经完成了这个代码:
System.out.println(myDocument.getElementsByTagName("item").item(0).getTextContent());
这只是打印第一个"项目"的所有内容,比如"标题"、"链接"one_answers"描述",但我不想全部打印,我只想打印"标题"。我很难让它完全正确地工作,但我觉得我已经接近了。任何帮助都将不胜感激。谢谢
来自org.w3.dom包上的Oracle文档:
此属性返回此节点及其子节点的文本内容。
您的代码正在调用item
标记上的getTextContent()
。如果修改代码以使其从title
标记中检索文本,则它可以正常工作。
System.out.println(myDocument.getElementsByTagName("item").item(0).getFirstChild().getTextContent());
注意,这依赖于title
是item
中的第一个子标签。您可能需要将其更改为更独立于订单的解决方案。
下面是一个代码,它遍历整个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();
}
希望能有所帮助。