如何将HTML插入AngleSharp中的文本节点?

迪恩

我正在使用AngleSharp解析文档。我有一个文本节点(NodeName:“#text”),我想在其中插入一些HTML。我当然可以将NodeValue重置为所需的值,但是它仍然是一个文本节点,因此所有括号都转义了。

如何获取文本节点的字符串值,向其中注入一些HTML,然后解析HTML来代替原始文本节点的DOM表示形式?

弗洛里安·拉普尔

我猜您想要的是用多个节点替换单个文本节点。

例如<div>foo</div>,即

+ root
  + textnode

变成

+ root
  + textnode (1)
  + element
  + textnode (2)

可以的<div>f<b>o</b>o</div>我能想到的最简单的方法就是替换节点。

var source = @"<div>foo</div>";
var parser = new HtmlParser();
var document = parser.Parse(source);
var div = document.QuerySelector("div");
div.InnerHtml = div.InnerHtml.Replace("foo", "f<b>o</b>o");

现在您可以辩解说,仅替换文本可能不是您想要的。您可能已经具有要插入的元素。因此,更好的方法(但更为复杂)是拆分文本节点并插入其余内容。

var source = @"<div>foo</div>";
var parser = new HtmlParser();
var document = parser.Parse(source);
var div = document.QuerySelector("div");
var text = div.TextContent;
div.RemoveChild(div.FirstChild); // assuming there is only one child
var bold = document.CreateElement("b");
bold.TextContent = text.Substring(1, 1); //o
div.Append(
    document.CreateTextNode(text.Substring(0, 1)), //f
    bold,
    document.CreateTextNode(text.Substring(2, 1)));//o

根据您的用例,可能会有更简单的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将元素或文本节点标记为“惰性”?

如何从HTML中删除“空白文本节点”?

如何使用regexp在原始html文本节点中的非终止点后插入中断标签

如何通过xpath提取html dom中的文本节点的文本?

如何从DOM查询文本节点,查找markdown模式,将匹配项替换为HTML标记以及将原始文本节点替换为新内容?

如何将HTML文本插入jQuery

如何从 JS 中的 HTML 标签元素中仅获取文本节点(不是嵌套标签)的内容?

使用JQuery将文本节点转换为HTML元素

如何从 Selenium 中的文本节点检索文本

如何从其文本节点或文本内容中获取跨度?

如何将文本节提取到基于ID命名的单独文件中?

如何在元素中检测文本节点

如何在lxml中获取连接的子文本节点

如何使用Jackson从Json文件中删除文本节点

如何在xmltype Oracle中检查元素的文本节点

我如何访问搅拌机中的文本节点?

在DOM中开始文本节点后如何做

如何排除文本节点周围的节点?

如何将一些文本放入另一个文本节点的第一行的末尾(p)

如何获取元素的文本节点?

如何删除div之前的文本节点?

如何获得文本节点的样式?

如何获取元素后的文本节点?

如何使用jQuery选择文本节点?

如何遍历SimpleXML以编辑文本节点?

如何使用Rangy选择文本节点?

动态更新 XSLT 中的文本节点

替换div中的原始文本节点

获取DOM中的文本节点值