.Net XmlDocumentのGetByClassNameの実装
-
06-07-2019 - |
質問
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']
所属していません StackOverflow