XML-File erstellt mit TXMLDocument korrekt?

    XML-File erstellt mit TXMLDocument korrekt?

    Hallo,

    ich hatte bisher mit XML wenig bis gar nichts am Hut, daher meine Frage:

    Ich erstelle ein XML-File welches an eine Vorlage angelehnt ist, komme aber nicht zu dem gleichen Resultat!

    Vorgabedatei.
    <Kunde Nr="4711" Name="Müller" > </Kunde>

    TXMLDocument erstellt aber folgendes:
    <Kunde Nr="4711" Name="Müller"/>

    Ist beides "XML-technisch gesehen" identisch?

    Danke Ciao
    Stefan
    Vielen Dank!
    Nun habe ich das Problem, dass der Arbeitgeber gern die "lange" Schreibweise (wegen der Lesbarkeit) haben möchte.
    Muss ich nun die erstellte Datei manuell anpassen oder habe ich eine Property übersehen, mit der ich die lange Variante einschalten kann?

    Ciao
    Stefan
    Such doch mal nach "MSXML self-closing tags", sofern Du MSXML benutzt. Ich finde leider nur .NET-Beispiele, in denen eine Eigenschaft IsEmpty gesetzt wird, die ich in MSXML nicht finden kann. Vielleicht hast Du ja mehr Glück, wenn nicht, muss der Arbeitgeber halt damit leben.
    10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
    Nur für Dein Verständnis:
    Das was Du da produziert hast ist ein XML-Tag (Kunde) mit 2 Attributen "Nr" und "Name".
    Der WERT steht zwischen dem öffnenden und schließenden Tag ... da steht aber bei Dir nix drin.
    Also geht die Komponente hin und verwendet die - technisch vollkommen identische - Kurzschreibweise.

    Quick & dirty Lösung: Such Dir doch etwas passendes und schreibe es als Wert zwischen öffnendes und schließendes Tag ... z.B. die Kundennummer oder ID oder sonstwas.
    Damit zwingst Du die Komponente dazu, die ausgeschriebene Form zu verwenden :D
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')
    Ein Leerzeichen verhindert das genau so gut.
    Vielleicht kann Dein Auftraggeber ja damit leben ...
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')

    DeddyH schrieb:

    Hier wird vorgeschlagen, nach der Serialisierung noch eine Ersetzung mit regulären Ausdrücken vorzunehmen.

    yo, so eine Holzhammermethode hatte ich auch schon im Hinterkopf :D

    Russisch einfach:
    - Ein Leerzeichen als NodeValue setzen.
    - Das gespeicherte XML in eine TStringList lesen, den Text mittels StringReplace(StringList.Text, '> <', '><', [rfReplaceAll]) um die Leerzeichen bereinigen und dann wieder speichern.

    Geht natürlich auch VOR dem Speichern, indem man das XML direkt aus der Komponente in eine TStringList kopiert.

    Nicht schön, aber selten ... zumindest für Leute wie mich, die mit den regulären Ausdrücken auf Kriegsfuß stehen :whistling:
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')
    Naja, Auftraggeber sind da manchmal seeeeeeehr pingelig.

    Programmieren könnte ja so schön sein, wenn da nicht immer diese Anwender wären ... ::)
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')