我如何在没有InnerHtml的情况下检索OuterHtml?

问题描述 投票:-1回答:1

所以我试图在HTML块中找到所有匹配的项目。让我们以以下示例为例:

<body>
    <div>
    test
    <a href="test">
        <img src="test">
    </a>
    </div>
</body>

所以我们去寻找单词test,首先在<div>中找到它,然后在<a>中找到,然后在<img>中找到。

我想做的是检索父级HTML,而没有附带的子级HTML。当前,InnerHtml / OuterHtml无法实现此目的,因为这两个都检索子级标记。我现在要解决的问题是遍历DOM树,但仅在父级上工作:<div></div>然后test然后<a href="test"></a>然后<img src="test">

我正在使用HTML Agility Pack,但愿意考虑可以提供我认为需要的功能的任何东西。

c# html dom
1个回答
0
投票

这是我今天在DEV上发布的解决方案。请参阅本文以获取更多讨论和示例。

private string OuterMinusInner(HtmlNode root)
{
    if (root == null)
        return string.Empty;

    foreach (var nodeFromList in
        (from node
         in root.ChildNodes 
         where node.NodeType != HtmlNodeType.Text 
         select node).ToList())
    {
        root.RemoveChild(nodeFromList);
    }

    return root.OuterHtml;
}

© www.soinside.com 2019 - 2024. All rights reserved.