简单的XML问题

时间:2009-04-27 14:38:53

标签: xml xsd

我在运行时创建XML,其架构就像

<Item>
    <Content>Hi</Content>
</item>

问题是当我尝试将一些HTML内容保存到此标记

<Item>
    <Content><strong>Hi<strong></Content>
</item>

如何解决此问题

提前致谢

5 个答案:

答案 0 :(得分:2)

正确答案是不在XML中嵌入标记。 XML应该只定义数据,解析器应该将它放在正确的标记中,例如所有项目 - &gt; <strong></strong>中的内容。

另一个解决方案是使用XML转义符转义标记:&lt;&gt;

答案 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;)