2

我有一组需要解析的 html 文档。它们以 Latin1Encoded 编码。我正在使用 HtmlAgiliy 包进行“解析”。

我有一个 Xpath 查询(带有瑞典字符),由于文档和编码之间的编码不同,我无法工作 VS 将 XPath 查询存储在?

Xpath 查询:

doc.DocumentNode.SelectNodes(@"//h2[text()='Företag']/../div//span[text()='Resultat:']/../div");

xpath 查询在 Firefox 扩展 xpath 检查器中运行良好。

4

1 回答 1

3

您能否提供更多示例代码和一些输入 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 插件完成,而不是在您的代码中完成)。您是否尝试通过将测试替换为(仅排除存在额外前导或尾随空格的情况)来更改您的text() = 'Företag'XPath normalize-space() = 'Företag'

于 2009-05-12T09:03:29.817 回答