Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi TXMLDocument verändert beim Einlesen Entitäten! (https://www.delphipraxis.net/125356-txmldocument-veraendert-beim-einlesen-entitaeten.html)

Ralf107 4. Dez 2008 16:12


TXMLDocument verändert beim Einlesen Entitäten!
 
Ich verwende in einem XML-Dokument Entitäten, um Sonderzeichen zu generieren:
XML-Code:
  <Beispiel>Bla&#13;Fasel</Beispiel>
Wenn ich den Inhalt mit
Delphi-Quellcode:
var
  pNode : IXMLNode;
  sText : String;
begin
  ...
  sText := pNode.Text;
auslese, bekomme ich
Code:
'Bla'#10'Fasel'
zurück!

Wie kann ich die Umwandlung von #13 (CR) in #10 (LF) verhindern?

Bernhard Geyer 4. Dez 2008 16:21

Re: TXMLDocument verändert beim Einlesen Entitäten!
 
Was stört dich daran? Ich finde es von Vorteil wenn der parser automatisch beim Lesen/Schreiben Sonderzeichen korrekt wandelt so das du im eigenen Code nix mehr machen mußt.

Ralf107 5. Dez 2008 07:43

Re: TXMLDocument verändert beim Einlesen Entitäten!
 
Zitat:

Zitat von Bernhard Geyer
Ich finde es von Vorteil wenn der parser automatisch beim Lesen/Schreiben Sonderzeichen korrekt wandelt so das du im eigenen Code nix mehr machen mußt.

Was ist daran korrekt, wenn der Parser aus einem ein #10 macht :?:

Im eigenen Code müsste ich die #10 wieder in eine #13 zurückwandeln. Das geht jedoch nicht, da ich nicht weiß, ob im XML-Dokument wirklich oder vieleicht steht.

Ich habe gerade ein paar weitere Entitäten durchprobiert. Bei einigen funktioniert es korrekt ( ), bei anderen löst der Parser sogar eine Exception aus ( ). :evil:

Da hilft wohl nur die Definition zusätzlicher XML-Elemente:
XML-Code:
<cr/><lf/><char id="6">...
.

Bernhard Geyer 5. Dez 2008 08:40

Re: TXMLDocument verändert beim Einlesen Entitäten!
 
Zitat:

Zitat von Ralf107
Was ist daran korrekt, wenn der Parser aus einem
ein #10 macht :?:

Ok, da hab ich nicht komplett gelesen. Hab gemeint du meinst allgmein die Wandlung.

Gibt es da ein Propertie wie beatify das du abschalten könntest?

Zitat:

Zitat von Ralf107
Ich habe gerade ein paar weitere Entitäten durchprobiert. Bei einigen funktioniert es korrekt ( ), bei anderen löst der Parser sogar eine Exception aus ( ). :evil:

Kann es sein das #12 XML-Technisch nicht erlaubt ist? :gruebel: Wenn du solche Sonderzeichen öfter hast würde sich u.U. ein CData-Segment anbieten in dem du es z.B. Hex-Codiert ablegst.

Ralf107 5. Dez 2008 11:09

Re: TXMLDocument verändert beim Einlesen Entitäten!
 
Zitat:

Zitat von Bernhard Geyer
Gibt es da ein Propertie wie beatify das du abschalten könntest?

Es gibt nur eine Option "PreserveWhitespace". Wenn ich die Option einschalte, bleiben alle Whitespace incl. Zeilenumbrüchen erhalten. Bei
XML-Code:
<Beispiel>
  <bla>
    <fasel>xyz</fasel>
  </bla>
</Beispiel>
enthält <bla> dann die drei Childnodes "#13' '", <fasel> und "#13' '" statt nur den einen Childnode <fasel>.

Zitat:

Zitat von Bernhard Geyer
Kann es sein das #12 XML-Technisch nicht erlaubt ist? :gruebel:

Das Zeichen #12 ist in XML-Dateien nicht erlaubt. Die Entitäten dienen doch aber gerade dazu, unerlaubte Zeichen darzustellen :?

Zitat:

Zitat von Bernhard Geyer
Wenn du solche Sonderzeichen öfter hast würde sich u.U. ein CData-Segment anbieten in dem du es z.B. Hex-Codiert ablegst.

Mit CDATA wird mir die XML-Datei beim Editieren zu unübersichtlich. Da eigendlich nur HT(#9) und CR(#13) vorkommen, und korrekt funktioniert, habe ich einfach ein <cr/> eingeführt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.

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