Frage

Ich versuche, ein XML Dokument mit dem GML Namensraum zu bauen und XML LINQ .

Mein Ziel ist ein XElement mit Inhalt wie folgt aus:

<gml:name>...</gml:name>

Aber ich bekomme die folgende:

<name xmlns="http://www.opengis.net/gml" />

Das Problem ist, dass das gml: von dem Element fehlt. Warum das?


Mein Code ist wie folgt:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");
War es hilfreich?

Lösung

Zu allererst dieser XML

<name xmlns="http://www.opengis.net/gml" />

entspricht dieser XML

<gml:name xmlns:gml="http://opengis.net/gml" />

Und alle XML-Verbraucher sollten es genauso behandeln. Dass die Sie die zweite Ausgabe wie diese erreichen können:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name",
                    new XAttribute(XNamespace.Xmlns + "gml", nsGML.NamespaceName));

Wenn Sie nicht über die Namespace-Deklaration Attribut LINQ to XML angeben wird für Dich einen Präfix automatisch auswählen (in diesem Fall verwendet er die leeren). Wenn Sie Kraft Nutzung eines bestimmten wollen Präfix Sie die Namespace-Deklaration Attribut zur Verfügung stellen müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top