繁体   English   中英

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

[英]Parsing XML file Using Java (DOM parser)

好的,因此我已经能够通过该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());

这只是打印出第一个“项目”的所有内容,例如“标题”,“链接”和“描述”,但我并不想全部打印,我只希望打印“标题”。 我在使其完全正确运行方面遇到困难,但是我感觉自己已经接近了。 任何帮助将不胜感激。 谢谢。

从org.w3c.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();
    }

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM