【发布时间】:2012-02-20 09:28:42
【问题描述】:
我有一个 XHTML 文件,它以:
开头<html xmlns="http://www.w3.org/1999/xhtml">
我加载它:
XmlDocument xml = new XmlDocument();
StringReader sr = new StringReader(html);
XmlTextReader xmltr = new XmlTextReader(sr);
xmltr.Namespaces = false;
xml.Load(xmltr);
当我调用xml.InnerXml 时,我总是遇到The 'xmlns' attribute is bound to the reserved namespace 'http://www.w3.org/2000/xmlns/'. 异常并且无法访问我的XmlDocument 的内部xml。加载过程中如何去掉xmlns?
解决方案是:
XmlNode xmln = xml.SelectSingleNode("//html");
if (xmln != null)
((XmlElement)xmln).RemoveAttribute("xmlns");
【问题讨论】:
-
您的 XHTML 声明谈到了
http://www.w3.org/1999/xhtml,但您描述的错误谈到了http://www.w3.org/2000/xmlns- 您确定它们都是正确的吗? -
是的,我的第三方 XHTML 有 1999 和异常说 2000。
-
更重要的是“xhtml”与“xmlns”位...
-
是的,但它不起作用。当您尝试以任何方式触摸此节点时,您总是会遇到异常。但是对于所有其他节点来说一切都很好。您仍然可以通过 XPath 获取任何内部节点(就像我一样)。如何解决?
-
好的,我刚刚重现了这个问题——如果你去掉“Namespaces = false”行,它就会消失。你为什么这样做?
标签: c# xml-namespaces xmldocument