2012-10-10 16 views
9
<person> 
<firstname> 
<lastname> 
<salary> 
</person> 

Questo è l'XML che sto analizzando. Quando cerco di stampare i nomi dei nodi di elementi figli di persona, ottengogetNodeName() su un nodo XML restituisce #text

testo

cognome

testo

cognome

testo

stipendio

Come elimino #text essere generato?

Update - Ecco il mio codice

try { 

    NodeList nl = null; 
    int l, i = 0; 
    File fXmlFile = new File("file.xml"); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    dbFactory.setValidating(false); 
    dbFactory.setIgnoringElementContentWhitespace(true); 
    dbFactory.setNamespaceAware(true); 
    dbFactory.setIgnoringComments(true); 

    dbFactory.setCoalescing(true); 


    InputStream in; 
    in = new FileInputStream(fXmlFile); 
    Document doc = dBuilder.parse(in); 
    doc.getDocumentElement().normalize(); 
    Node n = doc.getDocumentElement(); 

    System.out.println(dbFactory.isIgnoringElementContentWhitespace()); 
    System.out.println(n); 

    if (n != null && n.hasChildNodes()) { 
     nl = n.getChildNodes(); 

     for (i = 0; i < nl.getLength(); i++) { 
      System.out.println(nl.item(i).getNodeName()); 
     } 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+2

Mostra codice .. – swemon

+0

Il codice è stato fornito. Si prega di aiutare – coder

risposta

5

setIgnoringElementContentWhitespace funziona solo se si utilizza setValidating(true), e solo se il file XML che si sta parsing riferimenti un DTD che il parser può utilizzare per capire quale whitespace- solo i nodi di testo sono effettivamente ignorabili. Se il documento non ha una DTD, commette errori di sicurezza e presuppone che nessun nodo di testo possa essere ignorato, quindi dovrai scrivere il tuo codice per ignorarli mentre attraversi i nodi figli.

+0

Grazie mille per la vostra risposta. Quale metodo è preferibile? Scrivere una DTD o scrivere un metodo per ignorare gli spazi bianchi? – coder

+2

Non è difficile eliminare i nodi di testo di solo spazio post-hoc (ad esempio http://www.java.net/node/667186#comment-684625) e questo evita la necessità di modificare il file XML originale per aggiungere la DTD riferimento. –

+0

Questo è fantastico! Molte grazie! – coder

Problemi correlati