XDocument无法加载ÅÄÖchars(VB.net)

时间:2013-06-11 16:17:40

标签: vb.net utf-8 character-encoding linq-to-xml xml-encoding

我有这个代码用于在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"?>

我在这里找到this post,并尝试使用此代码,但它没有帮助;

Dim xmlr As XDocument

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

根据您的评论,您尝试处理的输入文档不是格式良好的XML,因为它在元素或属性内容中没有未转义的&符号&。由于XML语法中的&符号用于启动字符(例如&#160;)或实体引用(&lt;),因此如果它应该在内容中出现(例如{{},则必须将其作为&amp;进行转义。 {1}})(另一种选择是CDATA部分<foo>a &amp; b</foo>)。

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