如何在 XDocument.Parse() 中保留 HtmlEncoded 文本?

问题描述 投票:0回答:1

我的 Xml 属性的值为

select top(1) incidentid from Incident
。我将其传递给 XDocument.Parse(),但随后它会删除所有
 
。怎么保存呢?

c# xml html-encode
1个回答
0
投票

一个简单/hacky 的解决方案是将原始 XML 字符串中的

&
替换为
&
。但我怀疑这是否是正确的方法。

您要求这样做的事实可能意味着以下两件事之一:

  1. XML 中的值实际上应该表示 HTML 字符串。例如,用户在某处的文本框中逐字输入
     
    ,并且他们希望在查看时显示
     
  2. 这些值已针对 XML 进行了正确编码(用户输入
    select top(1)
    ),但您希望将该值嵌入到 HTML 上下文中,其中渲染将导致某些字符无法正确显示。

如果 #1 为 true,您应该确保该值在出现在 XML 中之前进行编码 (

select top(1) incidentid from Incident
)。

#2 的可能性更大。在这种情况下,您应该保留 XmlDocument 的原样,并确保这些值在以 HTML 形式呈现时是 HTML 编码的。

var html = $"<p>{HttpUtility.HtmlEncode(value)}</p>"

我应该注意,这两个选项都不会自动导致浏览器按原样呈现缩进和间距。您可能必须使用具有

white-space: pre;
CSS 属性的 HTML 元素才能实现该功能。

© www.soinside.com 2019 - 2024. All rights reserved.