2013-07-31 34 views
6

Nella documentazione per questa interfaccia si afferma che tutti i textnode restituiscono "#text" per i loro nomi invece del nome del tag effettivo. Ma per quello che sto facendo, il nome del tag è necessario.Come ottenere tagname di un TEXT_NODE in org.w3c.dom.Node di java

// 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" 

Come è possibile accedere al nome del tag? Questo deve essere possibile in qualche modo, non mi interessa una soluzione hacker.

Documenti:

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

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

Grazie.

risposta

14

Penso che tu abbia frainteso quali nodi sono coinvolti. Questo XML:

<country>US</country> 

... contiene due nodi:

  • Il country elemento
  • Il nodo di testo, con un contenuto di US

L'elemento non è un nodo di testo e il nodo di testo non ha un nome di elemento, perché non è un elemento. È importante capire che questi sono nodi diversi. Questa è la fonte di tutta la tua confusione, credo.

Se si sta guardando il nodo di testo, è possibile utilizzare node.getParentNode().getNodeName() per ottenere il nome dell'elemento. O dal nodo elemento, è possibile chiamare getTextContent().

+0

wow, grande incomprensione da parte mia! Grazie per la rapida risposta –

+0

Mr. Skeet! – saikosen