我们正在与HtmlAgilityPack合作...试图在文档中添加两个节点
我们使用以下内容:
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();
答案 0 :(得分:0)
您的方法似乎还可以,您需要共享完整的方法代码才能找到错误。这是一个小提琴,在这里您可以看到它的正常。可能是您的“样式”或“脚本”变量发疯了,从而导致了问题。