この XPath 式を linq に書き直しましたが、何か問題があります (要素が見つかりません)。私のHTML:
string xml = @"
<root>
<div id=""main"">
<div class=""content"">
<ul>
something
</ul>
</div>
<div class=""content"">
<ul>
something
</ul>
</div>
<div class=""content"">
<ul>
<li>
<div>My text</div>
</li>
</ul>
</div>
</div>
</root>
";
Xpath:
//div[@id="main"]//div[@class="content"]/ul/li/div
リンク:
string Content =
doc.DocumentNode.Descendants("div").First(x => x.GetAttributeValue("id", null) == "main")
.Descendants("div").First(x => x.GetAttributeValue("class", null) == "content")
.Descendants("ul").First()
.Descendants("li").First()
.Descendants("div").First().InnerText
背景: ポータブル ライブラリを使用しているため、LINQ を使用する必要があります。
私はすでに少し異なる表現で私の問題を解決しました:
string Content =
doc.DocumentNode.Descendants("div").First(x => x.GetAttributeValue("id", null) == "main")
.Descendants("div").Where(x => x.GetAttributeValue("class", null) == "content").ElementAt(2)
.Descendants("ul").First()
.Descendants("li").First()
.Descendants("div").First().InnerText;
動作しますが、Xpath と同じではありません。
だから私はあなたに尋ねています:正確な場所を指定せずに(Xpathのように)InnerTextでNodeを見つけるLINQ式は存在しますか?