0

我有这段代码用于在 XML 文件中循环报告:

Dim xmlr As XDocument = XDocument.Load("Myfile.xml")
For Each report As XElement In xmlr.Descendants("Report")
    'Do stuff with report values
Next

这可行,但如果文件包含 ÅÄÖ 之类的字符,我会收到错误消息。xml 文档的编码为 UFT-8;

<?xml version="1.0" encoding="utf-8"?>

我在这里找到了这篇文章,并尝试使用此代码,但没有帮助;

Dim xmlr As XDocument

Using oReader As StreamReader = New StreamReader("Myfile.xml", Encoding.GetEncoding("UTF-8"))
    xmlr = XDocument.Load(oReader)
End Using

有什么建议么?

4

1 回答 1

0

根据您的评论,您尝试处理的输入文档不是格式正确的 XML,因为它&在元素或属性内容中具有未转义的 & 符号。由于 XML 语法中的 & 符号用于开始字符(例如&#160;)或实体引用 ( &lt;),因此必须对其进行转义,就&amp;好像它应该按字面意思出现在内容中一样(例如<foo>a &amp; b</foo>)(替代方法是 CDATA 部分<foo><![CDATA[a & b]]></foo>)。

因此,.NET 框架的 XML 解析器通过告诉您您尝试解析的输入不是格式良好的 XML 并告诉您错误在哪里来做正确的事情。这就是 System.Xml 及以下所有 API 所能做的,它们可以读写格式良好的 XML。没有 API 可以尝试纠正错误。

于 2013-06-12T09:24:01.333 回答