![]() |
Verhindern des leeren xmlns Attributes
Hallo,
ich weiß nicht warum, aber beim Erstellen eines XML Files, bekomme ich in manchen Nodes das leere Attribut "xmlns" angegeben, hätte die Nodes aber gerne ohne diesem Attribut. Ich habe bei den Options alle Attribute, außer "doNodeAutoIntent" auf false gesetzt. Zur Verdeutlichung hier ein Auszug aus der erstellten XML Datei.
XML-Code:
Wie kann man dies verhindern?
<ResourceLinkPool xmlns="">
P.S.: Ich verwende Delphi7 Enterprise dafür. |
Re: Verhindern des leeren xmlns Attributes
Das ist ulkig, genau dasselbe Problem hatte ich auch gestern bei meinen XSLTs und bin mehr zu einem Workaround als zu einer eleganten Lösung gekommen. Das Problem ist, dass du ein Element generierst, das in einem Namespace liegt, und jetzt hier Elemente hineinkopierst (z.B. mit copy-of), die im Default-Namespace (also "") liegen. Der XSL-Transformer verhält sich korrekt. Anscheinend kann man jedoch beim copy-of keinen Namespace angeben. Die Elemente landen also immer in dem Namespace, in dem sie ursprünglich deklariert wurden. Ich habe das Problem umgangen, indem ich die Elemente mit for-each, element und copy-of select="@*" kopiert habe. Nicht schön, funktioniert aber.
Oh, und wenn du gar kein XSL verwendest, ist dein Problem vermutlich dasselbe: Du erstellst Elemente, die im Default-Namespace liegen, innerhalb von Elementen, die in einem anderen Namespace liegen. In dem Fall hast du es vielleicht einfacher als ich, denn du kannst diesen inneren Elementen einfach denselben Namespace geben wie den übergeordneten. Wenn der XML-Generator halbwegs vernünftig ist, wird er die Namespace-Angabe dann weglassen. |
Re: Verhindern des leeren xmlns Attributes
|
Re: Verhindern des leeren xmlns Attributes
Hm, ich verwende keine CoDom, Dom irgendwas dinge.
Delphi-Quellcode:
So ungefähr erzeuge ich mein XMLDokument und die entsprechenden Nodes...
var
lXMLDoc: IXMLDocument; lRootNode, lChildNode: IXMLNode; begin lXMLDoc := TXMLDocument.Create(nil); try lXMLDoc.Options := [doNodeAutoIndent]; lXMLDoc.ParseOptions := []; lRootNode := lXMLDoc.AddChild('root'); lChildNode := lRootNode.AddChild('child', -1); lXMLDoc.SaveToFile('C:\testfile.xml'); finally lXMLDoc := nil; end; end; Mich irritiert ja nur, dass es bei manchen passiert und nicht bei allen. Das wäre wenigstens konsequent gewesen. |
Re: Verhindern des leeren xmlns Attributes
Welchen DOMVendor hast du denn im Einsatz?
Kannst du Code zeigen, mit dem ich dein Problem nachstellen kann? |
Re: Verhindern des leeren xmlns Attributes
Ich verwende den von Microsoft. Müßte Version 4 sein, wenn ich mich nicht irre.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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