Проблема, создающая объект XElement с пространством имен GML
-
27-09-2019 - |
Вопрос
Я пытаюсь построить 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 будет автоматически выбрать префикс для вас (в этом случае он использует пустой). Если вы хотите заставить использование конкретного префикса, вам необходимо предоставить атрибуту декларирования пространства имен.
Не связан с StackOverflow