我在运行时创建XML,其架构就像
<Item>
<Content>Hi</Content>
</item>
问题是当我尝试将一些HTML内容保存到此标记
时<Item>
<Content><strong>Hi<strong></Content>
</item>
如何解决此问题
提前致谢
答案 0 :(得分:2)
正确答案是不在XML中嵌入标记。 XML应该只定义数据,解析器应该将它放在正确的标记中,例如所有项目 - &gt; <strong></strong>
中的内容。
另一个解决方案是使用XML转义符转义标记:<
和>
。
答案 1 :(得分:2)
我假设你有一个模式允许Item元素包含一个Content元素,而Content元素只能包含text或CDATA或类似元素。在这种情况下,您有两种选择。
首先,你可以以某种方式逃避HTML。您可以使用上面提到的Fredrik建议的CDATA部分。或者,您可以如上所述逃避包围。这两种解决方案都允许您继续将内容的内容视为文本。这使您可以为元素提供简单的内容模型。
或者,您可以扩展架构以允许xhtml元素作为Content元素的一部分。我提出了here的方法。当然,如果你的内容是html而不是xhtml,这将无效。
真的,选择是否能够将嵌入的html解析为xml的一部分。如果你想要它是文本,请逃避它。如果您希望它是可解析的,请扩展您的架构。
答案 2 :(得分:1)
您可以将HTML内容嵌入CDATA部分:
<Item><![CDATA[ <Content><strong>Hi</strong></Content> ]]></item>
答案 3 :(得分:0)
在将HTML字符串添加到xml之前,需要对其进行适当的转义。如果你使用的是.NET,some ways就可以了。
答案 4 :(得分:0)
必须使用&amp; lt;转义小于标记(&lt;);和&gt;相同标签(&amp; gt;)