C# 将纯文本转换为在p标记中包含i标记
我正在使用C#中的HtmlAgilityPack,并且我用纯p-tagless文本呈现。 我已经编写了一个扩展,允许我在p-tagless文本周围添加C# 将纯文本转换为在p标记中包含i标记,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我正在使用C#中的HtmlAgilityPack,并且我用纯p-tagless文本呈现。 我已经编写了一个扩展,允许我在p-tagless文本周围添加p标记,但是当我在p-tagless文本中获得textfootext时,它会变成文本foo文本 如何将其转换为: text另一段文本 为此: text另一段文本 这是我的分机: private static readonly string[] unacceptableParents = { "p", "a", "i", "h2", "h3"
p
标记,但是当我在p-tagless文本中获得textfootext
时,它会变成文本foo文本
如何将其转换为:
text另一段文本
为此:
text另一段文本
这是我的分机:
private static readonly string[] unacceptableParents = { "p", "a", "i", "h2", "h3", "h4", "h5", "h6" };`
public static HtmlDocument AddPTagAroundTextWithoutTag(this HtmlDocument doc)
{
GetXPathOfText(doc, doc.DocumentNode);
return doc;
}
public static void AddPTags(HtmlDocument doc, HtmlNode node)
{
var tekstName = "#text";
if (node.HasChildNodes)
{
foreach (var thisNode in node.ChildNodes)
{
if (thisNode.ChildNodes.Any())
{
GetXPathOfText(doc, thisNode);
}
else if (thisNode.Name == tekstName && !unacceptableParents.Contains(thisNode.ParentNode.Name))
{
thisNode.Name = "p";
thisNode.InnerHtml = "<p>" + node.InnerText.Trim() + "</p>";
}
}
}
else
{
if (node.Name == tekstName && !unacceptableParents.Contains(node.ParentNode.Name))
{
node.Name = "p";
node.InnerHtml = "<p>" + node.InnerText.Trim() + "</p>";
}
}
}
private static readonly string[]unacceptableParents={“p”、“a”、“i”、“h2”、“h3”、“h4”、“h5”、“h6”}`
公共静态HtmlDocument AddPTagAroundTextWithoutTag(此HtmlDocument文档)
{
GetXPathOfText(doc,doc.DocumentNode);
退货单;
}
公共静态无效添加标记(HtmlDocument文档,HtmlNode节点)
{
var tekstName=“#text”;
if(node.HasChildNodes)
{
foreach(node.ChildNodes中的var thisNode)
{
if(thisNode.ChildNodes.Any())
{
GetXPathOfText(doc,thisNode);
}
else if(thisNode.Name==tekstName&!unacceptableParents.Contains(thisNode.ParentNode.Name))
{
thisNode.Name=“p”;
thisNode.InnerHtml=“”+node.InnerText.Trim()+””;
}
}
}
其他的
{
if(node.Name==tekstName&!unacceptableParents.Contains(node.ParentNode.Name))
{
node.Name=“p”;
node.InnerHtml=“”+node.InnerText.Trim()+””;
}
}
}
也许我遗漏了一些东西,但你不能只做添加标签(doc,doc.DocumentNode)
就这样吗?哈哈哈,你是对的,xD甚至没有注意到,但这并不能修复I标签,这些标签仍然是分开的,在你更改后,它仍然添加了太多p
标签吗?如果AddPTags
中的分支if
可能会删除整个,而只保留else
部分?我不明白为什么节点有子节点在这里很重要。这是一个递归函数,所以我有这样一个例子:如果,我给出的带有I标记的示例只是HTML的一部分,它可以是我需要转换的HTML页面。只是,客户端无法在编辑器中添加p标记,所以我需要将所有HTML转换为具有p标记。但是i标记分隔文本,因此它不包括在p标记中,并且它将其作为不同的标记处理