Проблема, создающая объект XElement с пространством имен GML

StackOverflow https://stackoverflow.com/questions/3838670

Вопрос

Я пытаюсь построить XML Документ с использованием GML пространство имен и XML в LINQ.

Моя цель - XElement С содержимым, как это:

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

Но я получаю следующее:

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

Проблема в том, что gml: отсутствует из элемента. Почему это?


Мой код выглядит следующим образом:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");
Это было полезно?

Решение

Прежде всего этого XML

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

эквивалентно этому XML

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

И все потребители XML следует относиться к этому как же. Это сказал, что вы можете добиться второго выхода, как это:

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

Если вы не укажите, что атрибут декларации пространства имен LINQ в XML будет автоматически выбрать префикс для вас (в этом случае он использует пустой). Если вы хотите заставить использование конкретного префикса, вам необходимо предоставить атрибуту декларирования пространства имен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top