How to get tagname of a TEXT_NODE in java's org.w3c.dom.Node

java, w3c, xml-parsing, xmlnode

Solution

I think you've misunderstood what nodes are involved. This XML:

<country>US</country>

... contains two nodes:

- The `country` element

- The text node, with content of US

The element is not a text node, and the text node doesn't have an element name, because it's not an element. It's important to understand that these are different nodes. That's the source of all your confusion, I believe.

If you're currently looking at the text node, you could use `node.getParentNode().getNodeName()` to get the element name. Or from the element node, you could call `getTextContent()`.

Problem

In the documentation for this interface it states that textnodes all return "#text" for their names instead of the actual tag name. But for what i'm doing, the tag name is necessary. ``` // 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" ``` How could I access the tag name? This must be possible somehow, I don't mind a hackish solution. Docs: http://www.w3schools.com/dom/dom_nodetype.asp http://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Node.html Thank you.

Original source