gpt4 book ai didi

javascript - Html Agility Pack 弄乱了我的 javascript

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:18:18 25 4
gpt4 key购买 nike

我正在使用 Html Agility Pack 在文档的头部输出一些 javascript。但在将文档保存到文件系统后,我发现 javascript 源代码已被修改。我猜这是因为 HAP 正在尝试验证我的脚本。有可能阻止这种情况吗?正如您在下面看到的,我已经尝试设置不同的选项。

我使用 HAP 的代码:

var htmlDoc = new HtmlDocument();
htmlDoc.OptionCheckSyntax = false;
htmlDoc.OptionAutoCloseOnEnd = false;
htmlDoc.OptionFixNestedTags = false;
htmlDoc.LoadHtml(htmlContent);

HtmlNode headNode = htmlDoc.DocumentNode.SelectSingleNode("//head");
headNode.AddScriptNode(htmlDoc, "../../Scripts/jquery-1.7.1.min.js");

添加脚本标签的扩展方法

public static void AddScriptNode(this HtmlNode headNode, HtmlDocument htmlDoc, string filePath)
{
string content = "";

using (StreamReader rdr = File.OpenText(filePath))
{
content = rdr.ReadToEnd();
}
if(headNode != null)
{
HtmlNode scripts = htmlDoc.CreateElement("script");
scripts.Attributes.Add("type", "text/javascript");
scripts.InnerHtml = "\n" + content + "\n";
headNode.AppendChild(scripts);
}
}

最佳答案

我的假设:当使用 scripts.InnerHtml 时AgilityPack 尝试将内容解析为 HTML。因此,如果那里有标签,它们将被转换为 HTML 节点。

为避免这种情况,您应该设置 <script> 的内容作为文本。不幸的是,HtmlNode.InnerText属性是只读的,但有一个解决方法。您可以在 <script> 中添加一个文本(最好是注释节点)节​​点。节点:

if(headNode != null)
{
HtmlNode scripts = htmlDoc.CreateElement("script");
scripts.Attributes.Add("type", "text/javascript");
scripts.AppendChild(htmlDoc.CreateComment("\n" + content + "\n"));
headNode.AppendChild(scripts);
}

此处您的脚本正文将添加为注释节点(将添加 <!---->)。

关于javascript - Html Agility Pack 弄乱了我的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9465995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com