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

To jest plik XML, który parsuję. Przy próbie drukowania nazwy węzłów elementów podrzędnych osoby, uzyskaćOperacja getNodeName() na węźle XML zwraca #tekst

tekst

Imię

tekst

lastname

tekst

pensja

Jak mogę wyeliminować #text generowane?

Update - Oto mój kod

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

Pokaż kodowanie. – swemon

+0

Kod został dostarczony. Proszę o pomoc – coder

Odpowiedz

5

setIgnoringElementContentWhitespace działa tylko jeśli używasz setValidating(true), i to tylko wtedy, gdy plik XML jesteś parsowania odniesienia DTD, że parser może używać wypracować który whitespace- tylko węzły tekstowe są w rzeczywistości niedopuszczalne. Jeśli twój dokument nie ma DTD, to błądzi po bezpiecznej stronie i zakłada, że ​​żadne węzły tekstowe nie mogą zostać zignorowane, więc będziesz musiał napisać własny kod, aby zignorować je podczas przechodzenia przez węzły podrzędne.

+0

Dziękuję bardzo za odpowiedź. Która metoda jest lepsza? Pisanie DTD lub pisanie metody ignorowania białych przestrzeni? – coder

+2

Nie jest trudno wyodrębnić spoza tekstu tylko tekstowe węzły post-hoc (np. Http://www.java.net/node/667186#comment-684625), co pozwala uniknąć konieczności modyfikacji oryginalnego pliku XML w celu dodania DTD odniesienie. –

+0

To jest niesamowite! Wielkie dzięki! – coder

Powiązane problemy