2016-05-20 20 views
1

Ich habe folgende Frage:Parse Sonderzeichen in XML-stax Datei

Original-Teil der RSS-Datei:

<item> 
     <title> I can get data in tag this </title> 
     <description>&lt;p&gt; i don't get data in this &lt;/p&gt;</description></item> 

Wenn ich die Datei mit StAX Parser das Sonderzeichen '& lt' lesen; . Es wird automatisch in '<' konvertiert. dann kann ich die Daten nicht in den Rest-Tag "< get 'description>'

Dies ist mein Code:

public Feed readFeed() { 
Feed feed = null; 
try { 
    boolean isFeedHeader = true; 
    String description = ""; 
    String title = ""; 

    XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
    InputStream in = read(); 
    XMLEventReader eventReader = inputFactory.createXMLEventReader(in); 
    while (eventReader.hasNext()) { 
    XMLEvent event = eventReader.nextEvent(); 
    if (event.isStartElement()) { 
     String localPart = event.asStartElement().getName() 
      .getLocalPart(); 
     switch (localPart) { 
     case "title": 
     title = getCharacterData(event, eventReader); 
     break; 
     case "description": 
     description = getCharacterData(event, eventReader); 
     break; 
     } 
    } else if (event.isEndElement()) { 
     if (event.asEndElement().getName().getLocalPart() == ("item")) { 
     FeedMessage message = new FeedMessage(); 
     message.setDescription(description); 
     message.setTitle(title); 
     feed.getMessages().add(message); 
     event = eventReader.nextEvent(); 
     continue; 
     } 
    } 
    } 
} catch (XMLStreamException e) { 
    throw new RuntimeException(e); 
} 
return feed;} 

private String getCharacterData(XMLEvent event, XMLEventReader eventReader) 
    throws XMLStreamException { 
String result = ""; 
event = eventReader.nextEvent(); 
if (event instanceof Characters) { 
    result = event.asCharacters().getData(); 
} 
return result;} 

Ich folge den Anweisungen unter:. http://www.vogella.com/tutorials/RSSFeed/article.html

+0

Wie liest du diese Datei mit dem Stax Parser (relevanter Code)? Und wie (Beispiel pls) sieht die neue XML-Datei aus? – zapl

+0

Dann ist Ihr Code zum Schreiben in eine neue Datei fehlerhaft. Vielleicht, wenn Sie es zeigen, können wir helfen, herauszufinden, wie. – Andreas

+0

Ist nicht der zweite '' ein schließendes Tag wie ''? – dorukayhan

Antwort

4

Das Tutorial ist fehlerhaft Es berücksichtigt nicht die Tatsache, dass Sie mehrere Textereignisse für einen einzelnen Textblock erhalten könnten (der dazu neigt, wenn Sie eingebettete Entitäten haben).

Um zu mak Wenn Sie Ihr Leben einfacher gestalten möchten, stellen Sie sicher, dass Sie die Eigenschaft IS_COALESCING in der XMLInputFactory auf true festlegen, bevor Sie Ihren XMLEventReader erstellen (diese Eigenschaft zwingt den Leser, alle benachbarten Text-Ereignisse in einem einzigen Ereignis zu kombinieren).

+0

Ok @jtlborn. Ich hab es geschafft. Vielen vielen Dank! :) – joseJv

+0

@joseJv - wenn dies die richtige Antwort ist, sollten Sie es als solche markieren. froh, dass es für dich arbeitet! – jtahlborn