У меня есть 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 отображает filename = □.txt
Это может быть только ошибка Visual Studio. К сожалению, File.Exists(filename)
возвращает false, тогда как файл действительно существует.
Что случилось?