Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Verhindern des leeren xmlns Attributes (https://www.delphipraxis.net/109707-verhindern-des-leeren-xmlns-attributes.html)

GuenterS 6. Mär 2008 10:00


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:
<ResourceLinkPool xmlns="">
Wie kann man dies verhindern?

P.S.: Ich verwende Delphi7 Enterprise dafür.

OregonGhost 6. Mär 2008 10:25

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.

marabu 6. Mär 2008 12:39

Re: Verhindern des leeren xmlns Attributes
 
Hallo Günter,

vielleicht hilft dir dieser Beitrag weiter: klick

Freundliche Grüße

GuenterS 6. Mär 2008 13:12

Re: Verhindern des leeren xmlns Attributes
 
Hm, ich verwende keine CoDom, Dom irgendwas dinge.

Delphi-Quellcode:
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;
So ungefähr erzeuge ich mein XMLDokument und die entsprechenden Nodes...


Mich irritiert ja nur, dass es bei manchen passiert und nicht bei allen. Das wäre wenigstens konsequent gewesen.

marabu 6. Mär 2008 19:06

Re: Verhindern des leeren xmlns Attributes
 
Welchen DOMVendor hast du denn im Einsatz?

Kannst du Code zeigen, mit dem ich dein Problem nachstellen kann?

GuenterS 6. Mär 2008 22:42

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 06:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz