Einzelnen Beitrag anzeigen

bcvs
Online

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#1

XRechnung: XML und CDATA

  Alt 4. Aug 2020, 07:28
Hallo zusammen,

ich arbeite gerade an der Implementierung der XRechnung. Dazu benutze ich das TXMLDocument.

Für ein bestimmtes Element ist gefordert, dass Zeilenümbrüche im XML erhalten bleiben müssen. Also nehme ich einen CDATA-Knoten. Vom Prinzip her so:

Delphi-Quellcode:
Inhalt:='#SKONTO#TAGE=14#PROZENT=2.50#BASISBETRAG=11000.00#' + sLineBreak +
        '#SKONTO#TAGE=28#PROZENT=1.00#' + sLineBreak;

Node1:=RootNode.AddChild('cac:PaymentTerms');
  Node2:=Node1.AddChild('cbc:Note');
  Node3:=XMLDoc.CreateNode(Inhalt, ntCData);
  Node2.ChildNodes.Add(Node3)
Das funktioniert soweit ganz gut. Das XML sieht danach so aus:

Code:
  <cac:PaymentTerms>
    <cbc:Note>
      <![CDATA[#SKONTO#TAGE=14#PROZENT=2.50#BASISBETRAG=11000.00#
#SKONTO#TAGE=28#PROZENT=1.00#
]]>
    </cbc:Note>
  </cac:PaymentTerms>
Jetzt gibt es aber im Netz mindestens 2 Online-XRechnungs-Viewer, die sich an diesem Knoten stören und anmeckern, dass hier keine zusätzlichen Leerzeichen etc. vorhanden sein dürfen. Diese Syntax wird akzeptiert:

Code:
  <cac:PaymentTerms>
    <cbc:Note><![CDATA[#SKONTO#TAGE=14#PROZENT=2.50#BASISBETRAG=11000.00#
#SKONTO#TAGE=28#PROZENT=1.00#
]]></cbc:Note>
  </cac:PaymentTerms>

Deshalb meine Frage:
Wie bringe ich dem TXMLDocument bei, dass es das <![CDATA...]> direkt zwischen die Tags <cbc:Note></cbc:Note> schreibt, ohne weitere Zeilenumbrücke oder Leerzeichen?
  Mit Zitat antworten Zitat