Question

Je suis en train de construire un document XML avec GML espace de noms et XML LINQ .

Mon but est un XElement avec un contenu comme celui-ci:

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

Mais je reçois ce qui suit:

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

Le problème est que le gml: manque de l'élément. Pourquoi donc?


Code Ma est comme suit:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");
Était-ce utile?

La solution

D'abord ce XML

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

est équivalent à ce XML

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

Et tous les consommateurs XML devraient le traiter comme même. Cela dit, vous pouvez obtenir la deuxième sortie comme ceci:

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

Si vous ne spécifiez pas l'attribut déclaration d'espace de noms XML LINQ à choisir un préfixe automatiquement pour vous (dans ce cas, il utilise une vide). Si vous voulez l'utilisation de la force d'un préfixe spécifique, vous devez fournir l'attribut de déclaration d'espace de noms.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top