CDATA als String ausgeben

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgendes XML-File:
Code:
<Hauptelement>
  <Kindtageins>text</Kindtageins>
  <Kindtagzwei>
          <![CDATA[
                 kann auch beispielsweise ein binary file sein
           ]]>
   </Kindtagzwei>
</Hauptelement>

Ich würde gerne den Inhalt von CDATA in ein String abbilden. Geht das eigentlich? Mittels JAXB. Das Schlimme ist es, dass der Inhalt beispielsweise auch ein binary-File sein kann. Wenn das so ist, würde ich gerne das JPEG-File in ein String umwandeln, obwohl dann schlimme Zeichen daraus entstehen. Könnte jemand vielleicht sagen, was ist der Best-Practice dafür?

Ich bedanke mich für die Hilfestellungen schon mal.

Viele Grüße aus Rheinland,

Eure Ratna:)
 
Die Ausleselogik für die XML-File. Hätte ich ungefähr so gestaltet:
Java:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ReadXMLFile {

	public ReadXMLFile(String path) {

		try {

			File fXmlFile = new File(path);
			DocumentBuilderFactory dbFactory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
			Document doc = dBuilder.parse(fXmlFile);
			doc.getDocumentElement().normalize();

			System.out.println("Root element :"
					+ doc.getDocumentElement().getNodeName());

			NodeList nList = doc.getChildNodes();

			System.out.println("----------------------------");

			for (int i = 0; i < nList.getLength(); i++) {

				Node nNode = nList.item(i);
				System.out.println("\nCurrent Element :" + nNode.getNodeName());

				if (nNode.getNodeType() == Node.ELEMENT_NODE) {

					Element eElement = (Element) nNode;
					
					NodeList kindtageins = eElement.getElementsByTagName("Kindtageins");
					for (int j = 0; j < kindtageins.getLength(); j++) {
						System.out.println("Data : "
								+ kindtageins.item(j).getTextContent().trim());
					}
					
					NodeList kindtagzweis = eElement.getElementsByTagName("Kindtagzwei");
					for (int j = 0; j < kindtagzweis.getLength(); j++) {
						System.out.println("CDATA : "
								+ kindtagzweis.item(j).getTextContent().trim());
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Ich weiß jetzt allerdings nicht genau was da rauskommt sollte eine Binary in der CDATA stehen.

Als Beispieleingabe habe ich mal folgende Datei genommen:
XML:
<?xml version="1.0"?>
<Hauptelement>
  <Kindtageins>text</Kindtageins>
  <Kindtagzwei>
          <![CDATA[
                 kann auch beispielsweise ein binary file sein
           ]]>
   </Kindtagzwei>
     <Kindtageins>text2</Kindtageins>
  <Kindtagzwei>
          <![CDATA[
                 kann auch beispielsweise ein binary file sein2
           ]]>
   </Kindtagzwei>
</Hauptelement>

Die Ausgabe beim einlesen stellt sich dann wie folgt dar:

XML:
Root element :Hauptelement
----------------------------

Current Element :Hauptelement
Data : text
Data : text2
CDATA : kann auch beispielsweise ein binary file sein
CDATA : kann auch beispielsweise ein binary file sein2

Wäre ein Ansatz wie mans machen könnte.

Viele Grüße
Youza
 
Zuletzt bearbeitet von einem Moderator:
Zurück