使用umlaut字符读取Xml文件

时间:2012-08-02 06:55:51

标签: c# xml encoding

昨天我问了这个问题并得到了答复。

Writing encoded values for umlauts

在代码中,如果它是一个像这样的字符串,则parse方法可以工作:

XDocument xDoc = XDocument.Parse("<description>Top Shelf-ÖÄÜookcase</description>");

要将输入的xml文件作为字符串传递,我必须先读取它。如果输入xml中有变音符号,则read方法将失败。 我如何克服这个过程?

尝试了XDocument的Load和Parse方法。

负载: 给定编码中的字符无效。第3行,第35位。 解析: 根级别的数据无效。第1行,第1位。

以下是使用CDATA后的示例xml:

<?xml version="1.0" encoding="utf-8"?>
<kal>
 <description><![CDATA[Top Shelf-ÖÄÜookcase]]> </description> 
</kal>

3 个答案:

答案 0 :(得分:4)

将编码更改为“iso-8859-1”

答案 1 :(得分:0)

您是否尝试使用CDATA包装说明数据?

<description><![CDATA[Top Shelf-ÖÄÜookcase]]> </description>

特殊字符在XML中不能特别解析,除非用CDATA包装它们。

答案 2 :(得分:0)

Besi所述,您必须使用xml文件的正确编码才能正确处理变音符号。

即便如此,你说创建传入的xml文件并不在你的手中,你仍然可以通过使用专用的StreamReader来影响用于解析xml的编码:

//  create your XDocument
XDocument Doc;

//  setup a StreamReader for your file, specifying the encoding you need
using (StreamReader Reader = new StreamReader(@"C:\your-file.xml", System.Text.Encoding.GetEncoding("ISO-8859-1")))
{
    //  PARSE the STRING that is RETURNED from the StreamReader.ReadToEnd()-method
    Doc = XDocument.Parse(Reader.ReadToEnd());
}