【发布时间】:2010-12-09 14:10:39
【问题描述】:
我有一个 XML 文档 file.xml,它是用 Iso-latin-15(又名 Iso-Latin-9)编码的
<?xml version="1.0" encoding="iso-8859-15"?>
<root xmlns="http://stackoverflow.com/demo">
<f>€.txt</f>
</root>
从我最喜欢的文本编辑器中,我可以看出该文件以 Iso-Latin-15(它不是 UTF-8)正确编码。
我的软件是用 C# 编写的,想提取元素 f。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("file.xml");
在现实生活中,我有一个 XMLResolver 来设置凭据。但基本上,我的代码就是这么简单。加载顺利,我没有引发任何异常。
现在,我提取值时的问题:
//xnsm is the XmlNameSpace manager
XmlNode n = xmlDoc.SelectSingleNode("//root/f", xnsm);
if (n != null)
String filename = n.InnerText;
Visual Studio 调试器显示文件名 = □.txt
这可能只是一个 Visual Studio 错误。不幸的是,File.Exists(filename) 返回 false,而文件实际存在。
怎么了?
【问题讨论】:
-
我已经用 Visual Studio 仔细检查了编码。
-
您是否尝试过,如果也出现错误,如果您使用的是手动设置编码的 Stream?我会小心“它可能只是一个 Visual Studio 错误”之类的陈述......
标签: c# xml encoding xml-deserialization