sam*_*mar 4 c# html-agility-pack
这是我第一次使用HTML Agility Pack,并立即面临问题。
就像我的标题所建议的那样,我想将整个元素作为包含内部元素的字符串获取。
因此,例如下面是我的html,我正在搜索具有id的表单元素 aspnetForm
<html>
<head>
</head>
<body>
<form name="aspnetForm" id="aspnetForm">
<div id="div1">
<a href="div1-a1">Link 1 inside div1</a>
<a href="div1-a2">Link 2 inside div1</a>
</div>
<a href="a3">Link 3 outside all divs</a>
<div id="div2">
<a href="div2-a1">Link 1 inside div2</a>
<a href="div2-a2">Link 2 inside div2</a>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望以下为输出(以字符串形式)
<form name="aspnetForm" id="aspnetForm">
<div id="div1">
<a href="div1-a1">Link 1 inside div1</a>
<a href="div1-a2">Link 2 inside div1</a>
</div>
<a href="a3">Link 3 outside all divs</a>
<div id="div2">
<a href="div2-a1">Link 1 inside div2</a>
<a href="div2-a2">Link 2 inside div2</a>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我通常不喜欢问这种用勺子喂食的问题,但是我一直在尝试和搜索,但无法得到答案。
请帮忙!
提前致谢!
似乎您在寻找HtmlNode.OuterHtml:
//
// Summary:
// Gets or Sets the object and its content in HTML.
public virtual string OuterHtml { get; }
Run Code Online (Sandbox Code Playgroud)
因此,您只需要选择表单节点并获取其OuterHtml属性即可:
HtmlDocument doc = ... // load your HTML
HtmlNode formNode = doc.DocumentNode.SelectSingleNode("//form[@id='aspnetForm']");
string entireElementAsString = formNode.OuterHtml;
Run Code Online (Sandbox Code Playgroud)
更新
HAP如何对待标签似乎有一个非常古老的错误form。也许这是一个功能!
无论如何,这是一种解决方法:
HtmlNode.ElementsFlags.Remove("form");
Run Code Online (Sandbox Code Playgroud)
所以这应该工作:
HtmlNode.ElementsFlags.Remove("form");
HtmlDocument doc = ... // load your HTML
HtmlNode formNode = doc.DocumentNode.SelectSingleNode("//form[@id='aspnetForm']");
string entireElementAsString = formNode.OuterHtml;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1599 次 |
| 最近记录: |