HtmlAgilityPack - 附加两个节点不起作用

我们正在使用 HtmlAgilityPack ...尝试将两个节点添加到文档中

  1. 样式节点

  2. 脚本节点

我们使用以下内容:

HtmlNode styleNode = HtmlNode.CreateNode("<style>"+ style + "</style>");

HtmlNode jsNode= HtmlNode.CreateNode("<script>"+ js + "</script>");

page_body.AppendChild(styleNode);

page_body.AppendChild(jsNode);

我们得到的结果很奇怪,如果我们添加两个节点,那么样式将被附加到最终保存的文档中,而脚本不是。


但是当我们标出样式节点时:


// HtmlNode styleNode = HtmlNode.CreateNode("<style>"+ style + "</style>");

HtmlNode jsNode= HtmlNode.CreateNode("<script>"+ js + "</script>");

// page_body.AppendChild(styleNode);

page_body.AppendChild(jsNode);

然后脚本节点被附加并评估就好了......


我们做错了什么?为什么这两个节点不能相处?


...


完整代码


var pageDoc = new HtmlDocument();


var title = page.GetAttributeValue("title", ""); //String.IsNullOrEmpty(title)


var page_head = page.SelectSingleNode("//page-head");

var page_body = page.SelectSingleNode("//page-body");

var page_foot = page.SelectSingleNode("//page-footer");


if (page_head == null) page_head = default_head.Clone();

if (page_foot == null) page_foot = default_foot.Clone();


// fetch and add data


HtmlNode script_node = HtmlNode.CreateNode("<script>" + js_handler + "</script>");

HtmlNode style_node = HtmlNode.CreateNode("<style>" + general_style + style.InnerHtml + "</style>");


page_body.AppendChild(script_node);

page_body.AppendChild(style_node);


HtmlNodeCollection childNodes = page_body.ChildNodes;


foreach (var node in childNodes)

{

    if (node.NodeType == HtmlNodeType.Element)

    {

        Console.WriteLine(node.Name);

    }

}


string html_file = EXPORT_HTML_PATH + token + "_" + page_num + ".html";

string pdf_file  = EXPORT_PDF_PATH  + token + "_" + page_num + ".pdf";


FileStream sw = new FileStream(html_file, FileMode.Create); // specific page count

pageDoc.LoadHtml(page.OuterHtml);

pageDoc.Save(sw);

sw.Close();


沧海一幻觉
浏览 169回答 1
1回答

缥缈止盈

您的方法似乎还可以,您需要共享完整的方法代码才能找到错误。这是一个小提琴,你可以看到它没问题。可能是您的 'style' 或 'script' 变量有一些疯狂的东西导致了问题。
打开App,查看更多内容
随时随地看视频慕课网APP