使用Java解析XML文件(DOM解析器)



好的,所以我已经能够解析这个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());

注意,这依赖于titleitem中的第一个子标签。您可能需要将其更改为更独立于订单的解决方案。

下面是一个代码,它遍历整个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();
    }

希望能有所帮助。

最新更新