まず第一に、ID
とは異なりid
ます。HTMLでは大文字と小文字が区別されませんが、XMLでは大文字と小文字が区別されます。の作者であるSimonMourierからのこの回答を見てください。HtmlAgilityPack
ただし、XPATH機能を使用する場合は、小文字で記述されたタグを使用する必要があります。これは、「// body」式がBODY、Body、およびbodyに一致し、「//BODY」が何にも一致しないことを意味します。
同じことが。を表しID
ます。
フィルタロジックに関しては、次のLogical-and
演算子を使用する必要があります。
var nodes = doc.DocumentNode.SelectNodes(
"//*[contains(concat(' ', normalize-space(@class), ' '), ' abc ')"+
" and " +
"contains(concat(' ', normalize-space(@id), ' '), ' div1 ')]");
または、より単純です:
var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"abc\" and @id=\"div1\"]");
しかし、個人的な好みとして、文脈が許せば、私はLINQ
それを行うために使用します:
var nodes = doc.DocumentNode.Descendants()
.Where(i =>
i.Attributes["class"] != null
&& i.Id != null
&& i.Attributes["class"].Value == "abc"
&& i.Id == "div1");