Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML: Im Absatz Text und Tags kombinieren (https://www.delphipraxis.net/160777-xml-im-absatz-text-und-tags-kombinieren.html)

GHorn 31. Mai 2011 14:22

AW: XML: Im Absatz Text und Tags kombinieren
 
Das Parsen (Lesen) ist nicht meine Baustelle :stupid:. Das macht das andere Tool. Ich lese ausgewählte Excelzellen ein und schreibe die Inhalte in die XML-Datei. Der Inhalt der Zellen beinhaltet bereits die Formatierung - ist also z.B. fett oder kursiv. Und das muss mitgegeben werden. Irgendwie scheint sowas zu gehen. Werde also mal die Tips von himitsu testen.

blackfin 31. Mai 2011 14:55

AW: XML: Im Absatz Text und Tags kombinieren
 
Achso, du willst also nur das "invalide" XML nur für das externe Tool schreiben können? Sag das doch gleich! :-D

Wenn das externe Tool die CDATA-Tags nicht stören (sollte es eigentlich nicht), dann kannst du das über einen ntCdata-Node machen, der wandelt die Entities ja nicht um, ausserdem bekommst du am Schluss eine valide XML-Datei:

Delphi-Quellcode:
 
  n3 := n2.AddChild('p'); // Neuer Absatz bzw. zusammengehöriger Text

  s := 'Dies ist normaler Text ';
  s := s + '<bold>und dies wird als Fettschrift interpretiert</bold> ';
  s := s + 'und hier gehts wieder normal weiter.';

  // hier wird der CDATA-Node erzeugt, mit s gefüllt...
  n_cdata := My_XML.CreateNode(s,ntCData);

  // ...und n3 (dem p-tag) als childnode übergeben
  n3.ChildNodes.Add(n_cdata);

  My_XML.SaveToFile('Test.xml');
in der Test.xml steht dann folgendes:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<body>
  <start>
   <p>
     <![CDATA[Dies ist normaler Text <bold>und dies wird als Fettschrift interpretiert</bold> und hier gehts wieder normal weiter.]]>
   </p>
  </start>
</body>

Wenn das dein externes Tool nicht frisst, würde ich als zweiten Schritt versuchen, den kompletten <body>-Inhalt als CDATA zu deklarieren.
Wenn das auch nicht geht, ist dein externes Tool etwas "schwindlig" und hat seine eigenen XML-Parse-Regeln, die nicht der Norm entsprechen :-)

Dann hilft nur noch eines:
Nach dem Schreiben der test.xml durch das XMLDocument mach die Datei nochmal mit nem Stream oder dergleichen, auf und entferne per StringReplace die "<![CDATA[" und "]]>", anschliessend neu speichern. Aber beim speichern dann auf die UTF8-Codierung achten.

GHorn 31. Mai 2011 16:16

AW: XML: Im Absatz Text und Tags kombinieren
 
Zitat:

Achso, du willst also nur das "invalide" XML nur für das externe Tool schreiben können? Sag das doch gleich!
Scherzkeks!

Danke für den Tip. Werde ich gleich mal ausprobieren.

GHorn 1. Jun 2011 11:27

AW: XML: Im Absatz Text und Tags kombinieren
 
Hier werden Sie wirklich geholfen :thumb:

Hab das jetzt so wie von blackfin beschrieben eingebaut.
Anschließend die XML-Datei in eine StringList eingelesen und zeilenweise die "<![CDATA[" und "]]>" mit StringReplace(..) gelöscht. Ist vielleicht nicht die schnellste Variante, aber da das Programm nur hier firmenintern eingesetzt wird und alle, die damit arbeiten, glücklich über die Arbeitserleichterung sind, werden 1-2 Sekunden gerne in Kauf genommen.

Danke nochmals an alle für die Unterstützung. :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz