在此接口的文档中,它指出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"
如何访问标签名称?这一定是有可能的,我不介意骇人听闻的解决方案。
文件:
http://www.w3schools.com/dom/dom_nodetype.asp
http://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Node.html
谢谢。
最佳答案
我认为您误解了所涉及的节点。此XML:
<country>US</country>
...包含两个节点:
country
元素元素不是文本节点,并且文本节点没有元素名称,因为它不是元素。重要的是要了解这些是不同的节点。我相信,这就是您所有困惑的根源。
如果当前正在查看文本节点,则可以使用
node.getParentNode().getNodeName()
获取元素名称。或者从元素节点,您可以调用getTextContent()
。