我正在尝试将使用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>