【问题标题】:Parsing XML file Using Java (DOM parser)使用 Java 解析 XML 文件(DOM 解析器)
【发布时间】:2013-12-24 14:14:30
【问题描述】:

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

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

【问题讨论】:

    标签: java xml file parsing dom


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 2012-01-10
        • 1970-01-01
        • 2012-09-11
        • 2013-01-31
        相关资源
        最近更新 更多