Frage

Ich bin ein wenig Screen-Scraping-App zu schreiben, dass einige XHTML verbraucht - es versteht sich von selbst, dass die XHTML ungültig ist. Et-Zeichen sind nicht als & entkam

Ich bin mit Android XmlPullParser und es spuckt die folgenden Fehler auf den falsch codierten Wert:

org.xmlpull.v1.XmlPullParserException: unterminated entity ref 
(position:START_TAG <a href='/Fahrinfo/bin/query.bin/dox?ld=0.1&n=3&i=9c.0323581.1266265347&rt=0&vcra'>
@55:134 in java.io.InputStreamReader@43b1ef70) 

Wie erhalte ich diese um? Ich habe darüber nachgedacht, die folgenden Lösungen:

  1. Wrapping die InputStream in einem anderen, der die kaufmännische Und-Zeichen mit Entität Refs ersetzt
  2. Konfigurieren des Parser, so dass es auf magische Weise die falsche Markup akzeptiert

Welche diejenigen wahrscheinlich ist, erfolgreicher zu sein?

War es hilfreich?

Lösung

würde ich mit Ihrer ersten Wahl gehen, die Et-Zeichen ersetzen mehr eine fit Lösung scheint als die andere. Die zweite Option scheint eher ein Hack , um es durch die Annahme falsch Markup an der Arbeit.

Andere Tipps

Ich war für etwa eine Stunde auf diesem stecke vor, dass es in meinem Fall herauszufinden, war die „&“, die nicht von dem XML-Parser aufgelöst werden konnte, so dass ich die Lösung gefunden. So, hier ist ein Code-Snippet, das es vollständig beheben.

void ParsingActivity(String r) {
    try {
        parserCreator = XmlPullParserFactory.newInstance();
        parser = parserCreator.newPullParser();
        // Here we give our file object in the form of a stream to the
        // parser.
        parser.setInput(new StringReader(r.replaceAll("&", "&amp;")));
        // as a SAX parser this will raise events/callback as and when it
        // comes to a element.
        int parserEvent = parser.getEventType();
        // we go thru a loop of all elements in the xml till we have
        // reached END of document.
        while (parserEvent != XmlPullParser.END_DOCUMENT) {
            switch (parserEvent) {
            // if u have reached start of a tag
            case XmlPullParser.START_TAG:
                // get the name of the tag
                String tag = parser.getName();

ziemlich viel, was ich tue, ich bin nur die & mit &amp; ersetzen, da ich mit Parsen einer URL zu tun hatte. Hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top