这是我的代码:
Dim input = "<div><textarea>something</div></textarea>"
Dim doc As New HtmlAgilityPack.HtmlDocument
doc.OptionOutputAsXml = True
doc.LoadHtml(Input)
Using writer As New StringWriter
doc.Save(writer)
Dim res = writer.ToString
End Using
"res"的值为:
"<?xml version="1.0" encoding="windows-1255"?>
<div>
<textarea>
//<![CDATA[
something
//]]>//
</textarea>
</div>"
html的结果是:我的文本区域
我该如何预防?
根据我的理解,用HtmlAgilityPack设置文本区域值的答案隐含了原因:
A<text区域>元素没有value属性。它的内容是它自己的文本节点:
<text区域>
部分内容
<text区域>
为了安全地模拟相同的东西,HAP必须将内容包含在//<![CDATA[
部分中。
HAP的源代码对相关行有以下注释:
// tags whose content may be anything
ElementsFlags.Add("textarea", HtmlElementFlag.CData);
所以,你无法阻止它。