gpt4 book ai didi

c# - 如何加载忽略未声明的命名空间的 XmlNode 对象?

转载 作者:可可西里 更新时间:2023-11-01 08:16:19 25 4
gpt4 key购买 nike

我想加载一个 XmlNode没有得到 XmlException当存在无法识别的 namespace 时。

原因是因为我需要将一个 XMLNode 实例传递给一个方法。我正在加载任意 XML 片段,这些片段的 namespace 超出了它们的原始上下文(例如,MSWord 格式和其他具有各种模式的软件产品,这些模式使用它们的 namespace 前缀“污染”了内容)。 namespace 对我或它传递给的目标方法都不重要。 (这是因为目标方法使用它作为 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>

当我尝试将其加载到 XmlDocument 中时实例(这是我尝试获取 XmlNode)我得到以下 XML 异常:

'st1' is an undeclared namespace. Line 3, position 251.

我如何从那种 XML 片段中获取 XmlNode 实例?

最佳答案

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

关于c# - 如何加载忽略未声明的命名空间的 XmlNode 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4039464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com