繁体   English   中英

linq到xml - 摆脱空白的xmlns

[英]linq to xml - get rid of blank xmlns

我正试图摆脱我的xml文件中的空命名空间标签。 我见过的所有解决方案都是从头开始创建xml。 我有从前面的xml构造的各种xelements。 我正在做的就是

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;
    }
}

正如海报所提到的,替代方案是在添加它时为每个元素名称添加前缀,但这似乎是一个更好的解决方案,因为它更加自动化并节省了一些输入。

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

XElement Add函数将xmlns =“”添加到XElement

非常有用。 基本上如果你这样做

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

那应该解决它。 所以我想你必须告诉它在创建元素时不要担心特殊的命名空间。 奇。

可能就是这样: 使用Linq Xml的空命名空间

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM