如何将 innertext 放入数组中以在 HTMLAgilityPack 中的元素周围添加自定义标签
How to get innertext into array to add custom tags around the elements in HTMLAgilityPack
我希望能够在文本周围添加自定义标签,假设我有一个节点:
<p>Some text <img src="" /> more text </p>
如何获得 'Some text' 和 'more text' 周围的自定义标签?基本上我需要以元素数组结尾:
arr[0] = 'Some text'
arr[1] = 'more text'
..然后在它们周围添加我的自定义标签,因此当编辑这些文本元素时,p 标签看起来像
<p>Some text with edits <img src="" /> more text with edits </p>
此外,子节点也需要以同样的方式处理。
方法有很多种。查询所有文本节点的最简单方法:
var doc = ... get your document loaded
var textNodes = (doc.DocumentNode.SelectNodes("//text()") ?? Enumerable.Empty<HtmlNode>()).ToArray();
Xpath 中的//
选项将查找树中任意位置的所有节点。 text()
将 select 所有文本类型的节点。
因为如果没有找到节点,SelectNodes
将 return 为 null,我确保 return 在这种情况下是一个空数组,以便于进一步处理。
现在您可以随心所欲地使用这些文本节点了。设置它们的 InnerText 或 InnerHtml 属性以覆盖文本。
我希望能够在文本周围添加自定义标签,假设我有一个节点:
<p>Some text <img src="" /> more text </p>
如何获得 'Some text' 和 'more text' 周围的自定义标签?基本上我需要以元素数组结尾:
arr[0] = 'Some text'
arr[1] = 'more text'
..然后在它们周围添加我的自定义标签,因此当编辑这些文本元素时,p 标签看起来像
<p>Some text with edits <img src="" /> more text with edits </p>
此外,子节点也需要以同样的方式处理。
方法有很多种。查询所有文本节点的最简单方法:
var doc = ... get your document loaded
var textNodes = (doc.DocumentNode.SelectNodes("//text()") ?? Enumerable.Empty<HtmlNode>()).ToArray();
Xpath 中的//
选项将查找树中任意位置的所有节点。 text()
将 select 所有文本类型的节点。
因为如果没有找到节点,SelectNodes
将 return 为 null,我确保 return 在这种情况下是一个空数组,以便于进一步处理。
现在您可以随心所欲地使用这些文本节点了。设置它们的 InnerText 或 InnerHtml 属性以覆盖文本。