![]() |
ChildNode sieht nicht aus wie erwartet
Hallo,
ich erzeuge ein XML-Dokument mit folgendem (gekürzten) Code:
Delphi-Quellcode:
und bekomme dieses Dokument:
function CreateDocumentXML: boolean;
var Xml: IXMLDOCUMENT; ArchivNode, HeaderNode, ContentNode, DocumentNode, UNode: IXMLNode; fn : string; begin Result := false; try Xml := NewXMLDocument; Xml.Encoding := 'utf-8'; Xml.Options := [doNodeAutoIndent]; // looks better in Editor ;) ArchivNode := Xml.AddChild('archive'); HeaderNode := ArchivNode.AddChild('header'); ContentNode := ArchivNode.AddChild('content'); DocumentNode := ContentNode.AddChild('document'); ArchivNode.Attributes['version'] := '3.0'; ArchivNode.Attributes['generatingSystem'] := 'Test'; ArchivNode.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance'; ArchivNode.Attributes['xsi:schemaLocation'] := 'http://xml.datev.de/bedi/tps/document/v03.0 document_v030.xsd'; ArchivNode.Attributes['xmlns'] := 'http://xml.datev.de/bedi/tps/document/v03.0'; //die beiden Untereinträge UNode := HeaderNode.AddChild('date'); UNode.Text := Formatdatetime('yyyy-mm-dd hh:nn:ss',now); UNode := HeaderNode.AddChild('description'); UNode.Text := 'Datenübergabe'; ... fn := TPath.Combine(ExportPfad, 'document.xml'); if TFile.Exists(fn) then TFile.Delete(fn); Xml.SaveToFile(fn); except LogAusgabe('Fehler bei Erzeugung document.xml !'); exit; end; Result := true; end; Zitat:
Ciao Stefan |
AW: ChildNode sieht nicht aus wie erwartet
Ich pushe dies noch mal, in der Hoffnung dass sich doch noch ein Experte auf dem Gebiet von XML findet, der mir helfen kann...
Bei 255 Hits bisher habe ich noch Hoffnung! Ciao Stefan |
AW: ChildNode sieht nicht aus wie erwartet
Code:
Verwendest Du ein Schema? Dieses xsd führt auf jeden Fall ins Nirwana. Ausserdem besetzt Du ja selbst die Attribute xmlns. Ich verstehe die Frage nicht.
ArchivNode.Attributes['version'] := '3.0';
ArchivNode.Attributes['generatingSystem'] := 'Test'; ArchivNode.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance'; ArchivNode.Attributes['xsi:schemaLocation'] := 'http://xml.datev.de/bedi/tps/document/v03.0 document_v030.xsd'; ArchivNode.Attributes['xmlns'] := 'http://xml.datev.de/bedi/tps/document/v03.0'; |
AW: ChildNode sieht nicht aus wie erwartet
Deinem Parent-Node "ArchivNode" hast Du einen Namespace verpasst, den Childnodes von ArchivNode nicht. Daher wird das leere Namespace-Attribut für genau diese generiert.
Ändere mal folgende Zeilen, indem du "xsi:" voranstellst:
Delphi-Quellcode:
Im Result ist dann auch das leere "xmlns" nicht mehr vorhanden.
HeaderNode := ArchivNode.AddChild('xsi:header');
ContentNode := ArchivNode.AddChild('xsi:content'); |
AW: ChildNode sieht nicht aus wie erwartet
Danke für den Hinweis, das leere xmlns ist weg, dafür heißt der Node nun "xsi:Header" anstelle "header" !
Was nun? Ciao Stefan |
AW: ChildNode sieht nicht aus wie erwartet
Zitat:
Ciao Stefan |
AW: ChildNode sieht nicht aus wie erwartet
Und wie ist es bei gleichem Namespace?
Delphi-Quellcode:
(Natürlich sollte man dann auch eine Konstante verwenden, ist ja nur ein Test).
HeaderNode := ArchivNode.AddChild('header', 'http://xml.datev.de/bedi/tps/document/v03.0');
ContentNode := ArchivNode.AddChild('content', 'http://xml.datev.de/bedi/tps/document/v03.0'); |
AW: ChildNode sieht nicht aus wie erwartet
Danke, genau das war's!
Jetzt erhalte ich das erwartete XML, warum das so ist habe ich leider noch nicht verstanden ;-) Ciao Stefan |
AW: ChildNode sieht nicht aus wie erwartet
Viel zu lesen:
![]() |
AW: ChildNode sieht nicht aus wie erwartet
danke!
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 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