HTML Agilityパックを使用して、VisualStudio内のASPXファイルを解析しています。
指定されたID属性を持つ要素を検索しています。
私が使用しているコードは次のとおりです。
var html = new HtmlAgilityPack.HtmlDocument();
html.LoadHtml(docText);
if (html.DocumentNode != null)
{
try
{
var tagsWithId = html.DocumentNode.SelectNodes(string.Format("//[@id='{0}']", selector.Id));
ただし、このコードを実行すると、「式はノードセットに評価される必要があります」という例外がスローされます。
なぜこれがノードセットに「評価されなければならない」のか誰かに教えてもらえますか?単純にノードを返さないのはなぜですか(次の行はtagsWithId.Countを呼び出します)?確かに、SelectNodesメソッドによって返されるHtmlNodeCollectionには0ノードを含めることができますか?
または、Xpath式の形式が正しくないためにエラーが発生しますか?[これをテストしているセレクターIDは、ファイルに<div id="thisId">として確実に存在します。]
Visual Studioから直接ASPXファイルをロードすることも可能ですか(アドインを構築しています)、またはこれにXMLエラーが含まれ、代わりに出力HTMLストリームをロードする必要があります(つまり、最初にページ宣言なしで)ファイルのなど)?