HTML-Formatierten String in XML ablegen

Moin zusammen,

ich habe ein Programm, dass E-Mails mit dem gleichen Text verschickt. Verschiedene Konfigurationen hab ich in eine XML-Datei ausgelagert. Der Mail-Text ist mit HTML formatiert, auch diesen würde ich gerne in der XML ablegen. Nur bekomme ich hier ja Probleme mit den HTML-Tags, da diese als XML-Tags interpretiert werden.

Gibts hier eine Lösung?

Du ersetzt im HTML-Code < mit < und > mit >. Somit sind XML Tags von den HTML Tags getrennt.
Grüße,
MDickie

Jetzt stehen in meinem Mailtext einfach die Tags mit drin, formatiert ist nix

Beim Einlesen musst du < und > in < und > zurückverwandeln. Tipp: Du könntest einen vorhandenen XML-Parser und XML-Writer verwenden um auf so etwas keine Rücksicht nehmen zu müssen. Noch eine kleine Referenz zu XML: http://de.selfhtml.org/xml/regeln/zeichen.htm

Ich parse die XML über die Klasse DocumentBuilder, kann die sowas nicht?

Reich mir dein Code zum Document Builder rüber. Der soll beinhalten, wie du den HTML ins XML reinsteckst. Zur Zeit arbeite ich nicht viel mit XML und damit wäre es für mich viel einfacher dir zu helfen.
Grüße,
MDickie

Eigentlich müsste sich das auch über eine CDATA-Sektion lösen lassen, also <![CDATA[Ganz <b>toller</b> Inhalt]]>

[QUOTE=mdickie]Reich mir dein Code zum Document Builder rüber. Der soll beinhalten, wie du den HTML ins XML reinsteckst. Zur Zeit arbeite ich nicht viel mit XML und damit wäre es für mich viel einfacher dir zu helfen.
Grüße,
MDickie[/QUOTE]

Ich stecke den HTML nicht per Java-Code in die XML, ich möchte ihn dort nur rauslesen. Die XML hab ich mal per Hand geschrieben, die ändert sich ja nicht mehr. Hier der entsprechende Code:

try
{
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

    // root elements
    Document doc = docBuilder.parse("files/config.xml");
    Element rootElement = doc.getDocumentElement();
                                
    config.setMailUsername(rootElement.getElementsByTagName("MailUsername").item(0).getTextContent());
    config.setMailPassword(rootElement.getElementsByTagName("MailPassword").item(0).getTextContent());
    config.setMailText(rootElement.getElementsByTagName("MailText").item(0).getTextContent());
    config.setMailSubject(rootElement.getElementsByTagName("MailSubject").item(0).getTextContent());
}

Versteh ich nicht ganz, wie das geht, hab ich noch nie benutzt. Hättest du vielleicht ein kleines Beispiel?

Eigentlich wird in dem von Landei verlinkten Artikel alles erläutert…

DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
String test = "<root><htmlString><![CDATA[<html><body>Dieser Text ist <b>HTML</b> formatiert.</body></html>]]></htmlString></root>";
Document doc = docBuilder.parse(new ByteArrayInputStream(test.getBytes()));
Element root = doc.getDocumentElement();
System.out.println(root.getElementsByTagName("htmlString").item(0).getTextContent());```
Der Inhalt der XML Datei muss dann dementsprechend angepasst werden.

Ah, sry, den Link hab ich voll übersehen. Werd ich heut Abend mal testen.

Danke

*** Edit ***

Jawohl, funktioniert. Vielen Dank :slight_smile: