Не могли бы вы предоставить более образец кода и некоторый входной XML-документ? Из приведенной информации я написал небольшую пробную программу, которая работает так, как ожидалось. Работает ли для вас следующее?
Образец документа:
<?xml version="1.0" encoding="iso-8859-1"?>
<doc>
<test>Företag</test>
<test>Hallå</test>
</doc>
C#
using System;
using System.Xml.XPath;
class Program
{
static void Main(string[] args)
{
XPathDocument xpdoc = new XPathDocument(@"sample.xml");
XPathNavigator nav = xpdoc.CreateNavigator();
XPathNodeIterator iter = nav.Select("//*[text() = 'Företag']");
while (iter.MoveNext())
{
Console.WriteLine(iter.Current.ToString());
}
}
}
Выход
Företag
Из образца кода учитывая, что вы используете класс Microsoft.Windows.Design.Documents.Trees.DocumentNode
. Однако в документации указано, что этот класс не предназначен для непосредственного использования. Могу я спросить, что вы пытаетесь сделать?
Обновление: Возможно, вы столкнулись с проблемой с нормализацией пробелов (что может быть сделано с помощью вашей надстройки FireFox, а не в вашем коде). Вы пытались изменить свой XPath, заменив тест text() = 'Företag'
на normalize-space() = 'Företag'
(просто чтобы исключить случай, когда есть дополнительные ведущие или конечные пробелы)?
Как выглядят данные, которые вы хотите разборки? –
У меня был случай с «волшебством», он внезапно начал работать, что одновременно и здорово, и раздражает ... Я где-то читал, что В.С. начинает хранить в UTF8 сначала, когда это необходимо? –
Формат VS хранит ваш исходный файл, не имеет значения, потому что строки в C# всегда находятся в Unicode во время выполнения (http://www.yoda.arachsys.com/csharp/strings.html). Если ваш исходный XML-документ загружен правильно, то и выражение XPath, и XML находятся в кодировке Unicode внутри. –