如何使用   元素将我的字符串解析为 XML?
Posted
技术标签:
【中文标题】如何使用   元素将我的字符串解析为 XML?【英文标题】:How to parse my string to XML with   elements? 【发布时间】:2014-03-17 17:43:07 【问题描述】:我有字符串 s,它看起来:
<root><p>hello world</p> my name is!</root>
我有下一个代码:
try
m_Content = XDocument.Load(new StringReader(s));
catch (XmlException ex)
ex.Data["myerror"] = s;
throw;
如您所见,我想加载带有 &nbsp;
等所有元素的字符串并使其可见。但我有 XmlException:
对“nbsp”的未声明替换的引用
任何想法如何正确地做到这一点?
添加
ChrisShao 提供了一个好主意:将我的字符串放在<![CDATA[
标记中,但不幸的是它并没有解决我的问题。我有一个大字符串,其中包含很多标签和很少的大文本,我可以在其中遇到&nbsp;
元素。如果使用System.Web.HttpUtility.htmlDecode
,我会丢失所有这些元素并获得“”字段。
【问题讨论】:
【参考方案1】:回应您的添加部分。您获得的空白 (" "
) 字段是 &amp;nbsp;
在呈现时的正确表示。用于 xml 的 &amp;nbsp;
的正确编码是 &#160;
[Reference]。
如果您真的想在字符串加载到XDocument
时看到&amp;nbsp;
而不是" "
,请尝试使用&amp;
对与字符(&
)进行编码。将&amp;nbsp;
替换为&amp;nbsp;
[Reference]。
【讨论】:
【参考方案2】:使用 System.Web.HttpUtility.HtmlDecode 或 System.Net.WebUtility.HtmlDecode
【讨论】:
【参考方案3】:我认为你应该把你的字符串放到 CDATA 块中,像这样:
<root><![CDATA[<p>hello world</p> my name is!]]></root>
【讨论】:
但是,如果我的字符串包含大量标签和大量文本,我可以遇到&nbsp;
元素,我该怎么办?
那是怎么回事?在 CDATA 中无法正确解析?
是的!我把<![CDATA[
放在字符串的开头,]]>
放在最后。当我查看页面时,我在显示的元素末尾看到]]>
。我想你会同意我的观点,它不应该存在。以上是关于如何使用   元素将我的字符串解析为 XML?的主要内容,如果未能解决你的问题,请参考以下文章