Joh*_*n K 12 .net c# xml xmlnode
我想在存在无法识别的命名空间时加载XmlNode而不会获得XmlException.
原因是我需要将XMLNode实例传递给方法.我正在加载具有其原始上下文中的命名空间的任意XML片段(例如,MSWord格式化和其他具有各种模式的软件产品,这些模式使用其名称空间前缀"污染"内容).命名空间对我或它传递的目标方法并不重要.(这是因为目标方法使用它作为HTML进行渲染,名称空间将被自然地忽略或抑制.)
示例
以下是我尝试创建XMLNode的示例片段:
<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>
Run Code Online (Sandbox Code Playgroud)
当我尝试将其加载到XmlDocument实例(这是我尝试获取XmlNode)时,我得到以下XML异常:
'st1'是未声明的命名空间.第3行,第251位.
如何从这种XML片段中获取XmlNode实例?
dah*_*byk 31
XmlTextReader有一个Namespaces你可以关闭的属性:
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;
}
Run Code Online (Sandbox Code Playgroud)