昨天我问了这个问题并得到了答复。
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>
答案 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());
}