HTMLAgilityPack不保留原始的空标记

时间:2010-12-08 16:13:08

标签: c# asp.net html-agility-pack

如果我有一些像这样的空标签

<td  width="15px"/>

Agility pack修复它们就像

<td  width="15px"></td>

是否可以采取措施来覆盖此行为?

3 个答案:

答案 0 :(得分:5)

OptionWriteEmptyNodes上将HtmlDocument属性设置为true。

答案 1 :(得分:1)

在保存前尝试此操作:

if (HtmlNode.ElementsFlags.ContainsKey("td"))
{
    HtmlNode.ElementsFlags["td"] = HtmlElementFlag.Empty | HtmlElementFlag.Closed;
}
else
{
    HtmlNode.ElementsFlags.Add("td", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
}

这会更改所有td元素的行为,这可能不是您想要的。我不知道如何实现这个每个节点。

答案 2 :(得分:0)

虽然@Corbin March的答案没有按照要求运作,但它是我发现的唯一一个接近的答案。问题是HAP仍然会做一些额外的修复,这会导致这个问题。

从原始代码:

<td  width="15px"/>

通过如上所述设置ElementFlags,确实没有创建关闭元素标记,但是删除了原始尾部“/”。根据您的情况,这可能是一个问题,这对我来说。原始片段变为:

<td  width="15px">