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

时间:2013-12-07 03:39:01

标签: java xml file parsing dom

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

这只是打印第一个“项目”的所有内容,如“标题”,“链接”和“描述”,但我不想要全部,我只想打印“标题”。我在让它完全正常工作方面遇到了问题,但我觉得我很接近。任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

来自org.w3c.dom包上的Oracle documentation

  

此属性返回此节点及其后代的文本内容。

您的代码正在getTextContent()标记上调用item。如果您修改代码以便从title标记中检索文本,则它可以正常工作。

System.out.println(myDocument.getElementsByTagName("item").item(0).getFirstChild().getTextContent());

请注意,这取决于titleitem中的第一个子标记。您可能希望将其更改为更加独立于订单的解决方案。

答案 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();
    }

希望有所帮助。