本文介绍了如何加载忽略不宣而命名空间的XmlNode对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要加载了一个 XmlNode的没有得到一个的。

I want to load up an XmlNode without getting an XmlException when an unrecognized namespace is present.

的原因是因为我需要一个XMLNode实例传递给方法。我加载了具有命名空间任意XML片段了原来的环境(如格式化的MSWord以及各种模式的其他软件产品的污染与他们的命名空间prefixes的含量)。该命名空间是对我不重要,或到它的超越对象的方法。 (这是因为该目标的方法使用它为HTML用于呈现和命名空间将被忽略或SUP pressed自然。)

The reason is because I need to pass an XMLNode instance to a method. I'm loading up arbitrary XML fragments having namespaces out of their original context (e.g. MSWord formatting and other software products with various schemas that "pollute" the content with their namespace prefixes). The namespaces are not important to me or to the target method to which it's passed. (This is because the target method uses it as HTML for rendering and namespaces will be ignored or suppressed naturally.)

示例
这里有一个例子片段,我试图让一个XmlNode出来的:

Example
Here's an example fragment I'm trying to make an XMLNode out of:

 <p>
 <div>
     <st1:country-region w:st="on">
     <st1:place w:st="on">Canada</st1:place>
     </st1:country-region>
     <hr />
     <img src="xxy.jpg" />
 </div>
 </p>

当我试图将其加载到一个的XmlDocument 实例(这是我的试图得到一个XmlNode),我得到了下面的XML异常:

When I try to load it into an XmlDocument instance (that's my attempt to get an XmlNode) I get the following XML Exception:

ST1是一个未声明的命名空间。 3号线,位置251。

我如何去从一种XML片段中得到一个XMLNode实例?

推荐答案

的XmlTextReader 有一个命名空间属性,你可以关闭:

XmlTextReader has a Namespaces property you can turn off:

XmlDocument GetXmlDocumentFromString(string xml) {
    var doc = new XmlDocument();

    using (var sr = new StringReader(xml))
    using (var xtr = new XmlTextReader(sr) { Namespaces = false })
        doc.Load(xtr);

    return doc;
}

这篇关于如何加载忽略不宣而命名空间的XmlNode对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 15:10