【问题标题】:How to get tagname of a TEXT_NODE in java's org.w3c.dom.Node如何在 java 的 org.w3c.dom.Node 中获取 TEXT_NODE 的标记名
【发布时间】:2013-08-01 13:47:46
【问题描述】:

在此接口的文档中,它声明文本节点都返回“#text”作为它们的名称,而不是实际的标签名称。但是对于我正在做的事情,标签名称是必要的。

// I'm using the following imports
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;


// In the .xml input file
<country>US</country>  // This is a "text node" .getTextContent()
                       // returns "US", I need "country" and .getNodeName() 
                       // only returns "#text"

如何访问标签名称?这一定是可能的,我不介意一个骇人听闻的解决方案。

文档:

http://www.w3schools.com/dom/dom_nodetype.asp

http://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Node.html

谢谢。

【问题讨论】:

    标签: java xml-parsing w3c xmlnode


    【解决方案1】:

    我认为您误解了所涉及的节点。这个 XML:

    <country>US</country>
    

    ...包含两个节点:

    • country 元素
    • 文本节点,内容为 US

    元素不是文本节点,文本节点没有元素名称,因为它不是元素。了解这些是不同的节点很重要。我相信这就是你所有困惑的根源。

    如果您当前正在查看文本节点,则可以使用node.getParentNode().getNodeName() 来获取元素名称。或者从元素节点,你可以调用getTextContent()

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2011-06-30
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      相关资源
      最近更新 更多