如何在java的org.w3c.dom.Node中获取TEXT_NODE的标记名

时间:2013-07-31 20:36:26

标签: java xml-parsing w3c xmlnode

在此接口的文档中,它指出textnodes都返回“#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"

我如何访问标签名称?这必须是某种可能的,我不介意一个hackish解决方案。

文档:

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

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

谢谢。

1 个答案:

答案 0 :(得分:14)

我认为你误解了涉及哪些节点。这个XML:

<country>US</country>

...包含两个节点:

  • country元素
  • 文字节点,内容为美国

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

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