HttpAgilityPack有没有办法克隆HtmlDocument

时间:2018-02-06 07:42:59

标签: clone html-agility-pack

我需要克隆一个HtmlDocument对象,我想避免序列化/反序列化。 HtmlNode具有克隆(深层)功能,所以我想克隆文档节点,但我无法从文档节点重新创建HtmlDocument。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最终我做了这个(作为扩展功能):

public static HtmlDocument Clone(this HtmlDocument source)
{
    if (source == null)
    {
        return null;
    }
    HtmlDocument clone = new HtmlDocument();

    PropertyInfo[] infos = typeof(HtmlDocument).GetProperties();
    foreach (PropertyInfo pinfo in infos)
    {
        if (pinfo.CanRead && pinfo.CanWrite)
        {
            pinfo.SetValue(clone, pinfo.GetValue(source));
        }
    }

    clone.DocumentNode.CopyFrom(source.DocumentNode, true);

    return clone;
 }

似乎可以做到这一点。

欢迎评论。