Ich habe eine Funktion, die xml für ein Listenobjekt erzeugt:
%Vor% Die template.ToString () liest: <RootElement xmlns="urn:testTools">
Das xml lautet: <Example><SubElement>testData</SubElement></Example>
Nachdem die Funktion "add" die Vorlage ausgeführt hat.ToString () lautet: <RootElement xmlns="urn:testTools"><Example xmlns=""><SubElement>testData</SubElement></Example>
Aus irgendeinem Grund wurde ein leerer Namespace hinzugefügt, wie kann ich das verhindern?
Hier ist ein Beispiel, das xml ohne leere Namespaces ausgibt. Beachten Sie die bizarre Linq-zentrische Syntax rootNamespace + "MyElementName", was das Geheimnis ist. Dies ist der gleiche Namespace wie das gesamte Dokument, daher ist kein xmlns-Zusatz notwendig. Dies verkettet einen XNamespace + eine Zeichenkette, was eine "+" - Überladung ist, die für Linq funktioniert und mit der Linq umgehen kann. (Ohne Linq könnte es ein Kompilierfehler sein, einen String und einen Nicht-String-Typ zu verketten). Beachten Sie, dass dies für eine C # -Projektdatei ausgeführt wurde, bei der es sich um eine praktische Xml-Datei handelt. Gib es auf eine Konsole oder ein Richtextbox-Steuerelement aus. Dann nimm den "rootNamespace +" raus und merke den Unterschied.
%Vor%Es könnte sein, dass Ihr root ordnungsgemäß geschlossen werden muss:
%Vor%Tags und Links .net c# xml xml-serialization linq-to-xml