【问题标题】:Xml parser - Getting information inside commentXml 解析器 - 在评论中获取信息
【发布时间】:2015-08-18 22:22:01
【问题描述】:

我的目标是访问 xml 注释代码中的一些信息,在这种情况下,是 tag town 中的信息。

对于这样的 html 提取:

<script type="text/xml">
 <!--
 <world>  
  <city>
   <town>
    London
   </town>
  </city>
  <city>
   <town>
    New York
   </town>
  </city>
 </world>
 -->
</script>

我想要那个“伦敦”和“纽约”。

我的代码是:

   doc.getDocumentElement().normalize();
        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        NodeList nList = doc.getElementsByTagName("city");
        System.out.println("----------------------------");
        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("Town : " + eElement.getElementsByTagName("Town").item(0).getTextContent());


            }
        }

但是,此代码不起作用。但是,如果我删除 cmets,它确实如此。为什么它不起作用它 cmets,以及如何解决它? 谢谢!

【问题讨论】:

  • 注释只是文本。它不会有任何内部 XML 结构。您为什么要尝试使用包含 XML 的注释来执行此操作?
  • 因为那是原始的 XML。

标签: java xml dom


【解决方案1】:

它不起作用,因为在您的示例中该元素不是 xml 的元素,而是注释的一部分。为什么doc.getElementsByTagName("city"); 会从 cmets 解析并返回 xml 节点? 你可以阅读更多关于它的信息here

【讨论】:

  • 好的,我现在明白了。因为那是我拥有的原始 xml。那么,最好的选择是使用解析器删除 cmets?
  • 相反,我会遍历这些行并删除那些使内部节点变成评论的行,即&lt;!----&gt;。然后解析xml。
猜你喜欢
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
相关资源
最近更新 更多