2012-08-02 47 views
4

昨天我问了这个问题,并得到了答复。用变音符号读取XML文件

Writing encoded values for umlauts

在代码解析方法的工作,如果是像这样的字符串:

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

要通过输入XML文件作为字符串,我得先读它。如果输入xml中有元音变音,则读取方法将失败。 我如何过去?

尝试了XDocument的Load和Parse方法。

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

下面是使用CDATA后一个示例XML:

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

回答

0

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

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

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

+0

创建传入xml不在我的手中。但是我已经告诉了负责创建这个传入xml的另一方。 – Codehelp 2012-08-02 07:11:22

+0

即使CDATA的加载和分析方法都不工作!如果有帮助,我已经添加了一个示例xml。 – Codehelp 2012-08-02 07:22:38

3

更改编码为“ISO-8859-1”

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()); 
}