linq to xml - избавиться от пустых xmlns - PullRequest
4 голосов
/ 29 апреля 2009

Я пытаюсь избавиться от пустых тегов пространства имен в моем XML-файле. Все решения, которые я видел, основаны на создании XML с нуля. У меня есть различные xelements, построенные из предыдущего xml. Все, что я делаю, это

XElement InputNodes = XElement.Parse(InputXML);
m_Command = InputNodes.Element("Command");

и добавление xmlns = "" везде. Это действительно бесит. Спасибо за любую помощь.

Ответы [ 3 ]

8 голосов
/ 29 апреля 2009

В блогах MSDN есть запись , в которой показано, как легко (разумно) обойти эту проблему. Перед выводом XML вы захотите выполнить этот код:

foreach (XElement e in root.DescendantsAndSelf())
{
    if (e.Name.Namespace == string.Empty)
    {
        e.Name = ns + e.Name.LocalName;
    }
}

Альтернатива, как упоминает автор, заключается в добавлении к имени каждого элемента пространства имен по мере его добавления, но это кажется более приятным решением, поскольку оно более автоматизировано и экономит немного времени на ввод.

0 голосов
/ 22 июля 2013

Я думаю, что второй ответ на этот пост:

Функция XElement Add добавляет xmlns = "" к XElement

было очень полезно. В основном, если вы просто делаете

XNamespace rootNamespace = doc.Root.Name.NamespaceName;
XElement referenceElement = new XElement(rootNamespace + "Reference");

Это должно решить это. Так что я думаю, вы должны сказать ему не беспокоиться о специальном пространстве имен при создании элемента. Одд.

0 голосов
/ 29 апреля 2009

Возможно, это так: Пустое пространство имен с использованием Linq Xml

Это означает, что ваш документ находится в пространстве имен по умолчанию, отличном от добавляемых вами элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...