# XML Sonderzeichen in einem String ersetzen



## Michael0501 (30. Dezember 2009)

Hallo!

Folgendes Problem: 
Ich bekomme ein XML Feed, wo also Sonderzeichen codiert werden. (" => &quot
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:
&   =    &amp;
'     = &apos;
<    =   &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.


----------



## zeja (30. Dezember 2009)

Wenn du das ganze mit einer XML-API einliest, sollten die Entities entsprechend wieder in die Zeichen umgewandelt werden.


----------



## Michael0501 (30. Dezember 2009)

> Wenn du das ganze mit einer XML-API einliest, sollten die Entities entsprechend wieder in die Zeichen umgewandelt werden.



Wie meinst du das genau? Hab bezüglich Java und XML sehr sehr wenig Erfahrung!


----------



## zeja (30. Dezember 2009)

Wie parst du denn die XML-Datei im Moment? Du solltest am besten schon sowas wie SAX benutzen.


----------



## Michael0501 (30. Dezember 2009)

```
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...


----------

