1

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

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

4

2 に答える 2

2

与えられたクラスで?1つのクラスだけの場合は、.SelectNodes( "// * [@ class ='foo']")のようなことができるはずです。xhtmlでない場合は、HTMLAgilityPack検討する価値があります。

クライアントでは、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;
于 2008-11-03T14:04:38.177 に答える
1

はい、XPathを使用すると簡単です。

//*[@class='foo']
于 2008-11-03T14:04:51.250 に答える