我有一个稍微不好的XML,我试图在.NET中解析.其他解析器可以使用相同的XML文件 - 也就是说,它们更容忍用户错误.
XML看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<kml>
<Document id="12345">
<name>My name</name>
<description>My Description</description>
<myns:author>
<myns:name>My Name</myns:name>
</myns:author>
</Document>
</kml>
Run Code Online (Sandbox Code Playgroud)
我像这样加载它:
XmlDocument doc = new XmlDocument();
doc.Load(myFilePath);
Run Code Online (Sandbox Code Playgroud)
第二行正确地抛出异常:
'myns' is an undeclared prefix. Line 6, position 4.
从应用程序的角度来看,我们主要是作为另一个能够处理这个稍微错误的XML文件的应用程序的管道.我们不想拒绝此第三方应用程序能够处理的XML.
有没有办法禁用或修改.NET XML Parser的严格性?
有没有办法禁用或修改.NET XML Parser的严格性?
模式验证和类似的东西在某种程度上是可选的,但这只是无效的XML.XML解析器通常是严格的,应该是.下游应用程序能够处理这个问题这一事实本身就是IMO的一个令人担忧的迹象.
选项:
myns命名空间前缀是未申报的,你可以修复,通过在根元素声明它.您可能希望逐行加载文件,只需更改第二个(根XML声明)