# XML-Kommunikation mit Text und Binärdaten



## SBehnen27 (17. Jun 2008)

Hi folks.


Direkt zu meiner Verteidigung: wirklich gut kenne ich mich mit XML noch nicht aus. :/

Was habe ich vor?
Ich möchte eine Kommunikation über XML realisieren. Hierbei geht es um eine Middleware zwischen einem anfragendem und einem Daten-haltendem System. Das Daten Haltende System sei eine Datenbank.
Hier stelle ich mir ein Beispielszenario vor, in dem alle Personen mit dem Namen "Meyer" angefragt werden sollen. Als Antwort soll in XML verpackt entsprechend das Ergebnis auftauchen.



```
<Datenpaket>
    <typ>person</typ>
    <name>Meyer</name>
    <alter>23</alter>
    <bild>
        <filename>ich.jpg</filename>
        <src>BINÄR</src>
        <last_edit>12351345423</last_edit>
    </bild>
</Datenpaket>
<Datenpaket>
    <typ>person</typ>
    <name>Meyer</name>
    <alter>37</alter>
    <bild>
        <filename>du.jpg</filename>
        <src>BINÄR</src>
        <last_edit>7835564532</last_edit>
    </bild>
</Datenpaket>
```

Ich frage mich nun vor allem, wie Biärdaten transportiert, bzw. verpackt werden. Gibt es da eine etablierte Vorgehensweise? Muss etwas bestimmtes beachtet werden?


----------



## maki (17. Jun 2008)

Das Base64 encoding eignet sich für Binärdaten.


----------



## SBehnen27 (17. Jun 2008)

hi und danke.

wenn ich nach dom4j und Base64 suche, bekomme ich keine treffer. ich bin da wirklich recht unbedarft. Wenn ich Tante gugel frage, spuckt die mir nur diverse sachen aus, von denen ich nicht weiss, ob es das ist, was ich brauche... :/


----------



## maki (17. Jun 2008)

Base64 hat nix mit der verwendeten  XML API zu tun, musst schon selbst encoden und decoden.

Das commons-codec Projekt hat schon einen Base64 en-/decoder falls du dir keinen eigenen schreiben möchtest: http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html


----------



## SBehnen27 (17. Jun 2008)

ok. damit wäre ein Teil schon mal abgehakt. Trotzdem finde ich fraglich, wie ich so ein binär-fragment an meinen XML-Baum bekomme.
Ich habe folgenden Code gefunden, um ein XML-Dokument zu erzeugen:

```
public void createXMLDocument() {
        try {
           DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
           DocumentBuilder builder = factory.newDocumentBuilder();
           Document document = builder.newDocument();

           Element root = document.createElement("XML");

           Element person = document.createElement("Person");
           Element name = document.createElement("Name");
           Element vorname = document.createElement("Vorname");

           name.appendChild(document.createTextNode("Mustermann"));
           person.appendChild(name);

           vorname.appendChild(document.createTextNode("Karl"));
           person.appendChild(vorname);

           root.appendChild(person);
           document.appendChild(root);
           xmlDoc = document;
        } catch(Exception e) {
           e.printStackTrace();
        }
	}
```

document.create... bietet mir allerdings nichts an, was ich als möglichkeit sehen würde, einen binärknoten zu erzeugen. Das sieht alles sehr "string-lastig" aus...


----------



## maki (17. Jun 2008)

Base64 kodierte Daten sind Zeichenketten, keine Binärdaten.


----------

