# xml, jdom "Entität wurde referenziert aber nicht deklariert."



## guest37734 (5. Dez 2011)

Hallo,

sorry wenn das hier eigentlich schon geklärt wurde aber ich versteh es trotzdem nicht... Ich hab erst mit Java angefangen und wollte jetzt mal ein kleines Programm schreiben. Dieses empfängt eine XML-Datei (welche suchergebnisse enthält) von einer API. Nun will mit jdom die xml datei einlesen und die Daten nacher in ein (multidimensionales) Array speichern. Wenn dann allerdings sowas in der XML-Datei vorkommt: "&acirc;" gibt er mir den Fehler "Entität "acirc" wurde referenziert aber nicht deklariert." zurück.

Meine XML-Datei sieht in etwa so aus:
[XML]<?xml version="1.0" encoding="utf-8"?>
<suche>
  <entry>
    <info1>text</info1>
    <info2>&quot;</info2>
    <info3>&lt;br /&gt;</info3>
    <info4>&acirc;</info4>
  </entry>
</suche>[/XML]

und der Teil von meinem Code so:


```
File XmlFile = new File(file);
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(XmlFile);
            doc.getDocumentElement().normalize();

            NodeList nList = doc.getElementsByTagName("entry");
            array = new String[nList.getLength()][12];
            for (int temp = 0; temp < nList.getLength(); temp++) {

                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;

                    array[temp] = new String[]{getTagValue("id", eElement),
                        getTagValue("info1", eElement),
                        getTagValue("info2", eElement),
                        getTagValue("info3", eElement),
                        getTagValue("info4", eElement),
                }
            }
```


Ich wäre dankbar wenn jemand so nett wäre mir zu helfen =)


----------



## SlaterB (6. Dez 2011)

der Parser scheint da unerbittlich und groben Internetsuchen nach gibts keinen Workaround,
muss das XML unbedingt so aussehen? kann man das vorher manuell bearbeiten?


----------



## guest37734 (6. Dez 2011)

SlaterB hat gesagt.:


> der Parser scheint da unerbittlich und groben Internetsuchen nach gibts keinen Workaround,
> muss das XML unbedingt so aussehen? kann man das vorher manuell bearbeiten?



Naja ich bekomme die XML-Datei von einer API auf die ich kieinen Einfluss habe, aber theoretisch könnte ich sie vorher schon bearbeiten. Das Problem ist eben, dass ich mich mit Java und XML noch nicht so gut auskenne...
Könntest du mir vielleicht sagen was genau ich für Änderungen vornehmen muss (was die lesbare Alternative zu zB: "&acirc;" wäre) und ob es dafür vielleicht eine hilfreiche Funktion gibt ?


----------



## SlaterB (6. Dez 2011)

die Fehlermeldung, besonders im englischen "was referenced, but not declared." kann man suchen,
führt dann zu Vorschlägen wie eben XML-Anfang mit Deklaration
[xml]
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE some_name [
<!ENTITY acirc "hallo">
]> 
<suche>
  <entry>
    <info1>text</info1>
    <info2>&quot;</info2>
    <info3>&lt;br /&gt;</info3>
    <info4>&acirc;</info4>
  </entry>
</suche>
[/xml]
im JDom kommt dann "hallo" raus,

oder ganz einfach textuelle Ersetzung vor Verarbeitung,

vielleicht findest du auch eine komplette passende Übersetzungstabelle, geht ja anscheinend um 
Acirc - Wikipedia, the free encyclopedia
um HTML


----------



## guest37734 (6. Dez 2011)

OK also danke so funktioniert das auf jeden Fall... Allerdings ist mir etwas interessantes aufgefallen:

Meine XML-Datei besteht ja aus Suchergebnissen die ich von einer fremden API bekomme. Um mein Programm mal halbwegs zum laufen zu kriegen habe ich einfach mal eine Suchanfrage gestartet und mir die XML-Datei dann lokal gespeichert dass ich sie nicht jedes mal von der API laden muss.
Als ich nun schauen wollte, ob ich jetzt wirklich alle existierenden Sonderzeichen ersetzen muss und mir ein paar weitere Suchergebnisse habe ausgeben lassen ist mir aufgefallen, dass in keiner anderen XML-Datei solche komischen Zeichen waren.
Außerdem hab ich herausgefunden, dass "&acirc;�&frac14;"  eigentlich zwei Ausrufezeichen (!!) darstellen soll. In der selben XML-Datei gibt es allerdings auch Einträge mit zwei Ausrufezeichen die alle korrekt dargestellt werden. Hat da jemand Mist gebaut oder ist das einfach nur nicht logisch ?
Ach falls es relevant ist: Die Zeichen vor und nach &acirc;�&frac14; werden alle korrekt dargestellt.


----------

