Autor Beitrag
Maliko
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 13.07.14 16:35 
Hoi,

ich hab mal ne kurze Frage. Und zwar hab ich ein Programm, welches eine XML generiert. Dies funktioniert auch wunderbar, allerdings fügt das System automatisch jedem Node, welcher sich direkt unterhalb des Root-Nodes befindet ein xmlns="" als Attribut hinzu. Die Nodes, welche sich unterhalb der mit diesem Namespace gekennzeichneten Node befinden, bekommen ihn jedoch nicht.

Beispiel:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<RootNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xxxxx">
  <ChildNode1 xmlns="">
    <SubChildNode>
      <Test>123abc</Test>
    </SubChildNode>
  </ChildNode1>
  <ChildNode2 GUID="c413657a-3f96-42fc-9491-a9bdb08dc890" xmlns="" />
  <ChildNode3 xmlns="">
    <SubChildNode2 XX="X" XXXX="XXX" />
  </ChildNode3>
</RootNode>


Hat vielleicht jemand eine Ahnung woran das liegen kann? Hier der Code, mit welchem das Generiert wird:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
                XDocument xml = new XDocument();
                XNamespace ns = "http://xxx.xxxx.de";
                xml.Declaration = new XDeclaration("1.0""utf-8""yes");
                xml.Add(new XElement(ns + "RootNode"new XAttribute(XNamespace.Xmlns + "xsi""http://www.w3.org/2001/XMLSchema-instance")));

                XElement roots = xml.Root;
                root.Add(
                    new XElement("ChildNode1",
                        new XElement("SubChildNode",
                            new XElement("Test""123abc"))),
                    new XElement("ChildNode2"new XAttribute("GUID", Guid.NewGuid())));


Danke schon mal im Vorraus.

Lg Maliko
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 14.07.14 10:03 
Hallo Maliko,

wenn ich die Antworten bei XElement is automatically adding xmlns=“” to itself richtig interpretiere, dann mußt du den Namespace bei allen untergeordneten Elementen angeben - weil wenn du keinen angibst (und sich dieser vom Root-Namespace unterscheidet), dann wird ein leeerer Namespace hinzugefügt.