Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq到xml—摆脱空白XMLN_C#_Xml_Linq - Fatal编程技术网

C# linq到xml—摆脱空白XMLN

C# linq到xml—摆脱空白XMLN,c#,xml,linq,C#,Xml,Linq,我正在尝试去除xml文件中的空名称空间标记。我看到的所有解决方案都是基于从头创建xml。我有从以前的xml构造的各种元素。我所做的就是 XElement InputNodes = XElement.Parse(InputXML); m_Command = InputNodes.Element("Command"); 它在所有地方添加xmlns=”“。这真是令人气愤。谢谢您的帮助。可能是: 这表明您的文档与您添加的元素位于不同的默认名称空间。MSDN博客上有一个说明如何(合理地)轻松解决此问题的

我正在尝试去除xml文件中的空名称空间标记。我看到的所有解决方案都是基于从头创建xml。我有从以前的xml构造的各种元素。我所做的就是

XElement InputNodes = XElement.Parse(InputXML);
m_Command = InputNodes.Element("Command");
它在所有地方添加xmlns=”“。这真是令人气愤。谢谢您的帮助。

可能是:

这表明您的文档与您添加的元素位于不同的默认名称空间。

MSDN博客上有一个说明如何(合理地)轻松解决此问题的示例。在输出XML之前,您需要执行以下代码:

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

正如海报所提到的,另一种选择是在添加元素名称时,在每个元素名称前面加上名称空间,但这似乎是一个更好的解决方案,因为它更自动化,并且节省了一点打字时间。

我想这篇文章的第二个答案是:

非常有用。基本上如果你这么做的话

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

这应该可以解决问题。因此,我想您必须告诉它,在创建元素时不要担心特殊的名称空间。奇怪。

这就是问题所在,但我不能以这种方式构建Xelement,因为我已经从另一个xml文档中获取了一半Xelement。您只需确保文档的名称空间与插入的元素匹配即可。如果不这样做,每一个偏离默认值的元素都将获得它自己的xmlns属性,因此差异将持久存在XML文件中。