XML Sonderzeichen in einem String ersetzen

Michael0501

Grünschnabel
Hallo!

Folgendes Problem:
Ich bekomme ein XML Feed, wo also Sonderzeichen codiert werden. (" => ")
Meine Aufgabe ist es, alle Sonderzeichen zu entfernen.

Grundsätzlich keine besonders schwere Aufgabe, da ich einfach ein ".replace()" machen könnte!

Nur gibt es so viele verschiedene Sonderzeichen und ich wollte fragen ob es da schon eine fertige Lösung gibt bzw. ob ihr Lösungsvorschläge habt.

Ws ist es mit Regulären Ausdrücken zu lösen. Die Codierung sieht folgendermaßen aus:
& = &
' = '
< = &lt;
> = &gt;
" = &quot;
=> diese sind leicht zu ersetzen mit .replace();
Allerdings werden Umlaute auch folgendermaßen dargestellt:
Ä Ä
Ö Ö
Ü Ü
ä &#228
ö ö
ü ü
ß ß

Und da in meinen XML Feed verschiedene Sprachen, also verschiedene Umlaute/Sonderzeichen vorkommen bräuchte ich eine Lösung, die mir all diese ersetzt.
 
Wenn du das ganze mit einer XML-API einliest, sollten die Entities entsprechend wieder in die Zeichen umgewandelt werden.
 
Wie parst du denn die XML-Datei im Moment? Du solltest am besten schon sowas wie SAX benutzen.
 
Code:
String xmlStream = "..."; //Hier kommt das XML             
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmlStream));
doc = db.parse(is);
nodes = doc.getElementsByTagName("entry");

for (int iterator = 0; iterator < nodes.getLength(); iterator++) {  
//Actual Entry
         Element element = (Element) nodes.item(iterator);
         NodeList Description = element.getElementsByTagName("dc:description");
         if (Description.getLength() > 0) {
            Element line = (Element) Description.item(0);
            return getCharacters(line);
         } else {
            return "No description found for this book";
         }
....
public static String getCharacters(Element entry)
{
String characters;
Node child = entry.getFirstChild();
if (child instanceof CharacterData) {
CharacterData chardata = (CharacterData) child;
            characters = chardata.getData();
            return characters;
}
}

So mache ich das inetwa...
 
Zurück