如何向.NET XmlElement中插入未转义的CSS文本节点?
解决XmlDocument添加CSS文本被转义的问题
当你用XmlDocument的CreateTextNode添加CSS内容时,XML特殊字符(比如>)会被自动转义成实体(>),导致CSS选择器失效。解决这个问题的核心是用CDATA块包裹CSS内容,因为CDATA内的文本不会被XML解析器转义。
修改后的PowerShell代码
[XmlElement]$style = $html.CreateElement('style') # 用CreateCDataSection替代CreateTextNode,包裹CSS内容 [XmlCDataSection]$cdata = $html.CreateCDataSection(@' table > colGroup > col.genreCol { display: none; } '@ + "`t`t") $style.AppendChild($cdata) | Out-Null
原理说明
XmlText节点会严格遵循XML规则,自动转义所有特殊字符以保证XML结构合法,但这会破坏CSS语法。XmlCDataSection创建的CDATA块(格式为<![CDATA[内容]]>)会告知XML解析器:块内内容是纯文本,无需解析转义,完全适配CSS、JavaScript这类包含特殊字符的代码内容。
内容的提问来源于stack exchange,提问作者AxD
相关产品推荐
相关产品推荐

