我正在尝试删除xml文件中的空命名空间标记。我见过的所有解决方案都是从头开始创建xml。我有从前面的xml构造的各种xelements。我正在做的就是
XElement InputNodes = XElement.Parse(InputXML);
m_Command = InputNodes.Element("Command");
并且在任何地方添加xmlns =“”。这真是令人生气。谢谢你的帮助。
答案 0 :(得分:8)
MSDN博客上有一个post,展示了如何(合理地)轻松解决这个问题。在输出XML之前,您需要执行以下代码:
foreach (XElement e in root.DescendantsAndSelf())
{
if (e.Name.Namespace == string.Empty)
{
e.Name = ns + e.Name.LocalName;
}
}
正如海报所提到的,替代方案是在添加它时为每个元素名称添加前缀,但这似乎是一个更好的解决方案,因为它更加自动化并节省了一些输入。
答案 1 :(得分:0)
可能就是这样:Empty namespace using Linq Xml
这表示您的文档与您添加的元素位于不同的默认命名空间中。
答案 2 :(得分:0)
我认为这篇文章的第二个答案是:
XElement Add function adds xmlns="" to the XElement
非常有用。基本上如果你只是做
XNamespace rootNamespace = doc.Root.Name.NamespaceName;
XElement referenceElement = new XElement(rootNamespace + "Reference");
那应该解决它。所以我想你必须告诉它在创建元素时不要担心特殊的命名空间。奇