2016-11-04 3 views
0

Ich habe XML-Einträge wie folgt. Ich möchte alles extrahieren, nachdem sich das d: index-Tag bis zum Ende des Eintrags geschlossen hat.Erhalten Sie Text aus XML zwischen Tags in Java

<d:entry id="some_id" d:title="some_title"> 
     <d:index d:value="some_value"/> 
     <h1>headlines</h1> 

     <p>paragraphs</p> 
     <div> 
      <ul> 
       <li>lists</li> 

      </ul> 
     </div> 
     text like that 
</d:entry> 

ich versucht, mit

dBuilder = dbFactory.newDocumentBuilder(); 
      Document doc = dBuilder.parse(file); 
      doc.getDocumentElement().normalize(); 
eList = doc.getElementsByTagName("d:entry"); 
for (int i = 0; i < eList.getLength(); i++){ 
    Node nNode = eList.item(i); 
    textList[i] = nNode.getTextContent(); 
} 

Aber .getTextContent() gibt mir nur 'Text wie das' und nicht

<h1>headlines</h1> 

<p>paragraphs</p> 
    <div> 
    <ul> 
     <li>lists</li> 

    </ul> 
    </div> 
text like that 
+0

[hier] (https://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm#ADXDK3000) eine gute Ressource ist. –

+0

* "alles extrahieren" * In welcher Form? "Alles" enthält XML-Tags, möchten Sie also DOM-Knoten (da Sie DOM verwenden), oder möchten Sie, dass das Ergebnis wieder in Text konvertiert wird? Wäre es fair zu sagen, dass Sie den gesamten Inhalt von '' als Text haben möchten, ausgenommen das '' Element, denn wenn Sie es so betrachten, ist es vielleicht leichter zu handhaben. – Andreas

+0

danke für deine Kommentare, bearbeitet meinen Beitrag – gimba

Antwort

0

Je nachdem, was Sie genau tun wollen, können Sie könnte etwas in der Art tun:

import java.io.File; 
import java.io.IOException; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.xml.sax.SAXException; 

public class Arbeiter { 

public void arbeiten(File datei) 
{ 
    Document doc = getDoc(datei); 
    Element element = doc.getDocumentElement(); 
    print(element); 
} 

private Document getDoc(File datei) 
{ 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    Document doc = null; 
    try { 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     doc = db.parse(datei); 
    } catch (ParserConfigurationException | SAXException | IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return doc; 
} 

private void print(Node node) 
{ 
    for (int i=0; i<node.getChildNodes().getLength(); i++) 
    { 
     print(node.getFirstChild()); 
    } 
    if(node.getTextContent()!=null) 
    { 
     System.out.println(node.getTextContent()); 
    } 
} 

} 

Die Ausgabe lautet:

headlines 
    paragraphs  
      lists 
    text like that 
Verwandte Themen