Bei der XML-Generierung aus XmlDocument in .NET wird ein leeres xmlns
-Attribut angezeigt, wenn zum ersten Mal ein Element ohne einen zugeordneten Namespace eingefügt wird; Wie kann dies verhindert werden?Wie verhindert man leere Xmlns-Attribute in der Ausgabe von .NET XmlDocument?
Beispiel:
XmlDocument xml = new XmlDocument();
xml.AppendChild(xml.CreateElement("root",
"whatever:name-space-1.0"));
xml.DocumentElement.AppendChild(xml.CreateElement("loner"));
Console.WriteLine(xml.OuterXml);
Ausgang:
<root xmlns="whatever:name-space-1.0"><loner xmlns="" /></root>
Wunsch Ausgang:
<root xmlns="whatever:name-space-1.0"><loner /></root>
Gibt es eine Lösung für den XmlDocument
Code, nicht etwas, das tritt nach Konvertieren des Dokuments in eine Zeichenfolge mit OuterXml
?
Mein Argument dafür ist zu sehen, ob ich die Standard-XML eines bestimmten Protokolls mit XmlDocument-generierten XML übereinstimmen kann. Das leere xmlns
Attribut Mai nicht brechen oder einen Parser zu verwechseln, aber es ist auch nicht in irgendeiner Verwendung, die ich dieses Protokoll gesehen habe.
Genau. Wenn Sie das Element in den Namespace "whatever: name-space-1.0" einfügen, bedeutet dies, dass das leere Attribut xmlns (das es in keinen Namespace stellt) nicht hinzugefügt wird, wenn es serialisiert wird. Wenn Sie eine Aktualisierung benötigen, wie Namespaces funktionieren, werfen Sie einen Blick auf http://www.jclark.com/xml/xmlns.htm –
JeniT
Achtung: Elemente brauchen dies (oder das vielleicht bessere 'doc.DocumentElement.NamespaceURI') aber don Wenn Sie keinen Namespace für 'CreateAttribute()' angeben, erhalten Sie 'xmlns: psomething', auch wenn es sich um dieselbe URL handelt. –