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'テストをnormalize-space() = 'Företag'(追加の先頭または末尾の空白がある場合を除外するために)に置き換えてXPathを変更しようとしましたか?

于 2009-05-12T09:03:29.817 に答える