gpt4 book ai didi

c# - HtmlAgilityPack 用换行符替换段落标签

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:10 25 4
gpt4 key购买 nike

我们使用的第三方导出应用程序无法正确呈现段落标记(不包括段落之间的额外行),因此我尝试使用 HtmlAgilityPack 将所有段落标记替换为两个换行标记。

这是我目前所拥有的......

// Shortened for this example
string rawHtml = "<p><strong><span>1.0 Purpose</span></strong></p><p><span>The role</span></p><p><span>NOTE: Defined...</span></p>";

HtmlDocument doc = new HtmlDocument();
HtmlNode.ElementsFlags["br"] = HtmlElementFlag.Empty;
doc.LoadHtml(rawHtml);
doc.OptionWriteEmptyNodes = true;

// Updated using suggestion from Petr
HtmlNode linebreak = doc.CreateElement("br");
var paragraphTags = doc.DocumentNode.SelectNodes("p");
for (int i = 0; i < paragraphTags.Count; i++)
{
HtmlNode childNode = HtmlNode.CreateNode(paragraphTags[i].InnerHtml);
HtmlNode nextNode = paragraphTags[i];

if (i > 0)
{
nextNode = doc.DocumentNode.InsertAfter(linebreak, nextNode);
nextNode = doc.DocumentNode.InsertAfter(linebreak, nextNode);
}
doc.DocumentNode.InsertAfter(childNode, nextNode);
paragraphTags[i].Remove();
}

它确实删除了段落标签,但只呈现一个换行符。我已经在互联网上进行了尽可能多的搜索,但似乎没有任何效果。

OuterHtml 看起来像这样....

<strong><span>1.0 Purpose</span></strong><br /><span>The role</span><br /><span>NOTE: Defined...</span>

知道我做错了什么吗?我觉得必须有更简单的方法,是吗?

最佳答案

想通了。为 Petr 和 Simon 的建议点赞。关键似乎是我需要两个不同的换行节点。

string rawHtml = "<p><strong><span>1.0 Purpose</span></strong></p><p><span>The role</span></p><p><span>NOTE: Defined...</span></p>";

HtmlDocument doc = new HtmlDocument();
HtmlNode.ElementsFlags["br"] = HtmlElementFlag.Empty;
doc.LoadHtml(rawHtml);
doc.OptionWriteEmptyNodes = true;

HtmlNode linebreak1 = doc.CreateElement("br");
HtmlNode linebreak2 = doc.CreateElement("br");
var paragraphTags = doc.DocumentNode.SelectNodes("p");
for (int i = 0; i < paragraphTags.Count; i++)
{
if (i > 0)
{
doc.DocumentNode.InsertBefore(linebreak1, paragraphTags[i]);
doc.DocumentNode.InsertBefore(linebreak2, paragraphTags[i]);
}
doc.DocumentNode.InsertBefore(HtmlNode.CreateNode(paragraphTags[i].InnerHtml), paragraphTags[i]);
paragraphTags[i].ParentNode.RemoveChild(paragraphTags[i]);
}

关于c# - HtmlAgilityPack 用换行符替换段落标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043334/

25 4 0