【问题标题】:Reading Xml files with umlaut chars使用变音符号读取 Xml 文件
【发布时间】:2012-08-02 06:55:51
【问题描述】:

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

Writing encoded values for umlauts

在代码中,如果它是这样的字符串,则 parse 方法有效:

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>

【问题讨论】:

    标签: c# xml encoding


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您是否尝试过使用CDATA 包装描述数据?

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

      除非用 CDATA 包装特殊字符,否则 XML 中的特殊字符无法很好地解析。

      【讨论】:

      • 创建传入的 xml 不在我的手中。但我已经告诉负责创建这个传入 xml 的另一方。
      • 即使是 CDATA,Load 和 Parse 方法都不起作用!!!如果有帮助,我已经添加了一个示例 xml。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-01-17
        • 2016-08-28
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多