質問

XmlDocumentを使用してXHTML文字列を解析および操作し、一部のノードを非HTMLノードに変換しています。

特定のクラス名を持つすべてのノードのリストを取得する最良の方法は何ですか? XPathで実行できますか?

役に立ちましたか?

解決

特定のクラスで?クラスが1つだけの場合は、.SelectNodes(" // * [@ class = 'foo']")のようにできるはずです。 xhtmlでない場合は、 HTML Agility Pack を見る価値があります。

クライアントでは、jQueryが適切なオプションになり、複合クラス名をサポートします。

個々の要素に複数のクラス名があり、サーバーでそれを処理する必要がある場合、最初に候補クラスを見つける必要があると思われる(" // * [@ class!= ''])次に、それらをループして Split()を実行し、結果のクラス名を確認します。つまり、手動で引き離します。

LINQの用語では、次のようなものです。

        var qry = from XmlElement el in d.SelectNodes("//*[@class!='']")
                  let classes = el.GetAttribute("class").Split(new[] {' '},
                          StringSplitOptions.RemoveEmptyEntries)
                  where classes.Contains("foo")
                  select el;

他のヒント

はい、XPathを使えば簡単です:

//*[@class='foo']
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top