解析带有非法字符的 XML - 在 VB6 中加载正常



我正在尝试将使用ADODB在VB6应用程序中生成的XML文件加载到.Net应用程序中。其中一些XMl文件包含无效字符,在.Net端抛出错误,但通过原始VB6应用程序加载完美。例如

VB6 代码(这工作正常):

Dim xmlDoc As MSXML.DOMDocument
xmlDoc.Load(XMLfilename)

C# 代码(这引发错误"john"是一个意外的标记)

XmlDocument xmlDoc = new XmlDocument();
xmlDoc .Load(XMLfilename);

这是引发错误的行示例:"Cliff"是一个意外的标记。预期空白

<rs:data>
<z:row ID="1234" ENRODATE="2010-11-12" LastName="Van "Cliff" Anderson" FirstName="Mark" GENDER="MALE"/>
</rs:data>

我确实了解以上不是有效的XML,但VB6可以毫无问题地接受这一点。有没有办法处理这样的问题?

Cliff 周围有额外的引号,导致无效的 XML 语法

姓氏="范"克里夫"安德森"

显然,VB6 解析器以某种方式原谅了这一点。 您将需要删除引号或正确转义它们。

要解决此问题,您必须分析 XML。

LastName="Van "Cliff" Anderson" - 是 invalit becouse 有 " char,它以姓氏结尾。你有姓氏="范",你有一些悬崖"安德森",这是无效的。

要解决此问题,您必须找到此属性的开头和此属性的结尾姓氏 = (开始)"范"克里夫"安德森"(结束)。

您必须将从 VB6 生成的 XML 更改为不使用属性,而是使用新的 XML 元素<LastName>Van "Cliff" Anderson"<LastName>。如果无法更改VB6的输出,则必须在执行xmlDoc .Load(XMLfilename);之前手动进行更改。

结果 XML:

 <z:row ID="1234" ENRODATE="2010-11-12" FirstName="Mark" GENDER="MALE">
     <LastName>Van "Cliff" Anderson<LastName>
 <z:row>

最新更新