HTML 敏捷包忽略输入斜杠

HTML agility pack ignore input slash

我已经尝试了所有的答案来解决这个问题,但它对我不起作用.. 代码就像

 HtmlNode.ElementsFlags.Remove("option");
    HtmlNode.ElementsFlags.Remove("link");
    HtmlNode.ElementsFlags.Remove("meta");
    HtmlNode.ElementsFlags.Remove("form");
    HtmlDocument html = new HtmlDocument();
    HtmlNode.ElementsFlags["input"] = HtmlElementFlag.Empty;
html.OptionWriteEmptyNodes = true;
        html.load(file);
         var ETagTable = html.CreateElement("table");
        ETagTable.InnerHtml = ChangedTagE_Str; 

        /* where changedtage_str = <tr>
        <th>Reference:</th>
        <td><input type="text" id="e.reference" size="30" maxlength="32" value="" /></td>
        </tr>*/

in innerHTML 的输入为 <input type="text" id="e.crm_reference" size="30" maxlength="32" value="">

我要<input type="text" id="e.crm_reference" size="30" maxlength="32" value="" />

有什么解决办法吗?

你能试试下面的代码吗

编辑 - 请立即检查写入

HtmlDocument doc = new HtmlDocument();
doc.OptionWriteEmptyNodes = true;
HtmlNode nodeDiv = doc.CreateElement("div");
nodeDiv.InnerHtml = "<table><tr><th>Reference:</th></tr><tr><td><input type='text' id='e.crm_reference' size='30' maxlength='32' value='' /></td></tr></table>";

将 OptionWriteEmptyNodes 设置为 true,修改文档中的 html 并通过调用 LoadHtml() 解析返回结果 html。

HtmlDocument html = new HtmlDocument();
html.OptionWriteEmptyNodes = true;
html.Load("page.htm");
html.DocumentNode.Element("html").Element("body").InnerHtml = "<input type=\"text\" />";
html.LoadHtml(html.DocumentNode.OuterHtml); //Reload the document

如果您使用 Load()LoadHtml() 加载外部 html,Gauthaman 建议的方法有效方法,但在插入新元素或设置 innerHTML 属性.

时不会

我们能做的就是欺骗 Agility 重新加载文档。

HtmlDocument html = new HtmlDocument();
html.OptionWriteEmptyNodes = true;
html.LoadHtml("<!DOCTYPE html><html><head><title>ttt</title></head><body></body></html>");
var ETagTable = html.CreateElement("table");
html.DocumentNode.Element("html").Element("body").AppendChild(ETagTable);
ETagTable.InnerHtml = "<tr><th>Reference:</th><td><input type=\"text\" size=\"30\""
    +"maxlength=\"32\" value=\"\" /></td></tr>";
html.LoadHtml(html.DocumentNode.OuterHtml); //<-- Reload the document
Console.WriteLine(html.DocumentNode.InnerHtml);