Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[JAVA] dom4J XMLWriter

Pagina: 1
Acties:

  • Daggie
  • Registratie: Juni 2002
  • Laatst online: 13-08 20:48
Ik heb een probleem met het schrijven van een XML bestand.

In mijn XML-bestand wil ik graag een entity als
code:
1
"ë"
wegschrijven. (&#235 = ë)

Mijn XML-bestand heeft UTF-8 als encoding. Aangezien mijn bestand invoer is voor een andere applicatie, kan ik dat niet veranderen. Ik heb geen DTD in mijn bestand. Het moet well-formed zijn, maar het hoeft niet gevalideerd te worden. Het XML-bestand is een tussenstap, waarmee (als alles goed gaat) niemand in contact komt.

Ik wil een "org.dom4j.Document" schrijven. In dit object steekt wel degelijk
code:
1
"ë"
.
Hieronder de nuttige code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void maakXML()
{
            Document document = new Document();
            // knip. document wordt aangemaakt
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter writer = null;

            try {
                writer = new XMLWriter(new StringWriter(), format );
                writer.setEscapeText(false);
                writer.setResolveEntityRefs(false);
                writer.write( document );
            } catch (UnsupportedEncodingException e) {
                // knip.
            } catch (IOException e) {
                // knip.
            }
}


Het resultaat is niet
code:
1
ë
maar
code:
1
ë
. Mijn ampersand is dus vertaald naar
code:
1
&
en dat wil ik dus niet ..

Ik heb
Java:
1
     writer.setMaximumAllowedCharacter(-1)

geprobeerd, maar er verandert niks. In de API stond ook dat de ampersand niet kan ge-escapet worden. API: http://www.dom4j.org/apidocs/org/dom4j/io/XMLWriter.html

  • redfox314
  • Registratie: December 2004
  • Laatst online: 07-11 14:35
de ë is geen entity die voor xml gedefineert is. Volgens mij moet je die zelf definiëren in een dtd/schema. Anders leest dom4j dat als een string met een ampersand en vervangt die dat door & amp;
Het is logisch dat je in je document een ampersand niet kan escapen want een & zonder ; erna maakt je document niet meer well-formed.

ter referentie http://en.wikipedia.org/w...aracter_entity_references

[ Voor 18% gewijzigd door redfox314 op 10-07-2008 19:55 ]