Html Agility Pack 获取双 div 内的特定内容

发布于 2024-12-05 02:18:27 字数 742 浏览 1 评论 0原文

我是 HTML Agility pack 的新手,我还没有弄清楚如何解析以下代码块:

<p>
    <div class='myclass1'>
        <div id='idXXXX'>content1<br>content2
        </div>  
        <div class="myclass2">
            <table>
                <tr>
                    <td align="left">content3 <b><a href="">content4</a></b></td>
                    <td align="right">content5 <b><a href="">content6</a></b></td>
                </tr>
            </table>
        </div>
    </div>
</p>

其中 XXXX 是随机生成的数字。

我有加载 HTML 文档的所有代码。

我想要从上面的代码中获取 content1 和 content2 以及不同的查询 content4。

I am new to HTML Agility pack and i haven't figured out how can i parse the following block of code:

<p>
    <div class='myclass1'>
        <div id='idXXXX'>content1<br>content2
        </div>  
        <div class="myclass2">
            <table>
                <tr>
                    <td align="left">content3 <b><a href="">content4</a></b></td>
                    <td align="right">content5 <b><a href="">content6</a></b></td>
                </tr>
            </table>
        </div>
    </div>
</p>

where XXXX is a random generated number.

I have all the code to load the HTML document.

What i want from the above code is to get content1 and content2 and in a different query content4.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋风の叶未落 2024-12-12 02:18:27
var doc = new HtmlDocument();
doc.Load("test.htm");
var res = doc.DocumentNode.SelectSingleNode("//div[@class='myclass1']");
var firstDiv = res.SelectSingleNode("div");
var content1 = firstDiv.ChildNodes[0].InnerText.Trim();
var content2 = firstDiv.ChildNodes[2].InnerText.Trim();
var content4 = res.SelectSingleNode(".//div[@class='myclass2']")
                  .SelectSingleNode(".//td[@align='left']/b/a")
                  .InnerText
                  .Trim();

更新:

如果您有多个具有给定类的 div,并且您想要匹配每个 div 的内容,您可以执行以下操作:

var doc = new HtmlDocument();
doc.Load("test.htm");
var res = doc.DocumentNode.SelectNodes("//div[@class='myclass1']");
foreach (var item in res)
{
    var firstDiv = item.SelectSingleNode("div");
    var content1 = firstDiv.ChildNodes[0].InnerText.Trim();
    var content2 = firstDiv.ChildNodes[2].InnerText.Trim();
    var content4 = item.SelectSingleNode(".//div[@class='myclass2']")
                       .SelectSingleNode(".//td[@align='left']/b/a")
                       .InnerText
                       .Trim();
}
var doc = new HtmlDocument();
doc.Load("test.htm");
var res = doc.DocumentNode.SelectSingleNode("//div[@class='myclass1']");
var firstDiv = res.SelectSingleNode("div");
var content1 = firstDiv.ChildNodes[0].InnerText.Trim();
var content2 = firstDiv.ChildNodes[2].InnerText.Trim();
var content4 = res.SelectSingleNode(".//div[@class='myclass2']")
                  .SelectSingleNode(".//td[@align='left']/b/a")
                  .InnerText
                  .Trim();

UPDATE:

If you have multiple divs with the given classes and you want to match the content for each of them you could do this:

var doc = new HtmlDocument();
doc.Load("test.htm");
var res = doc.DocumentNode.SelectNodes("//div[@class='myclass1']");
foreach (var item in res)
{
    var firstDiv = item.SelectSingleNode("div");
    var content1 = firstDiv.ChildNodes[0].InnerText.Trim();
    var content2 = firstDiv.ChildNodes[2].InnerText.Trim();
    var content4 = item.SelectSingleNode(".//div[@class='myclass2']")
                       .SelectSingleNode(".//td[@align='left']/b/a")
                       .InnerText
                       .Trim();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文