0

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

VB6 代码(这工作正常):

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

C# 代码(这会引发错误 'john' is an unexpected token)

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 可以毫无问题地接受这一点。有没有办法处理这样的问题?

4

2 回答 2

2

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

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

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

于 2012-06-28T19:44:35.530 回答
1

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

LastName="Van "Cliff" Anderson"- 是无效的,因为有“字符”,它以姓氏结尾。你有姓氏=“范”,你有一些无效的悬崖“安德森”。

为了解决这个问题,你必须找到这个属性的开始和这个属性的结束 LastName = (start)"Van "Cliff" Anderson"(end)。

您必须将 VB6 生成的 XML 更改为不使用属性,而是使用新的 XML Element <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>
于 2012-06-28T20:02:14.070 回答