HI,我有一个php脚本生成的xml outout:
<pre><code>
<menu>
<option id="67" ddmmyyyy="11 jan 2011" text="This is a text<p> ok</p> & not only a text!!" />
</menu>
</code></pre>
xml会返回错误,如何以正确的方式对其进行格式化?
答案 0 :(得分:1)
编辑:
正如Shikiryu所说,你应该为你的文字使用另一个元素,如:
<pre><code>
<menu>
<option id="67" ddmmyyyy="11 jan 2011">
<text><![CDATA[This is a text<p> ok</p> & not only a text!!"]]></text>
</option>
</menu>
</code></pre>
您需要稍微更新信息的提取方式,但这是正确的方法。
CDATA
标记告诉XML解析器忽略其内容。当您访问节点时,包装CDATA
标签将不存在(IE您不需要做任何额外的操作来删除它)。
原始代码示例(预编辑):
<pre><code>
<menu>
<![CDATA[<option id="67" ddmmyyyy="11 jan 2011" text="This is a text<p> ok</p> & not only a text!!" />]]>
</menu>
</code></pre>
答案 1 :(得分:0)
XML属性不能包含标记,它们只需要是文本内容。这意味着属性值中不允许使用元素,CDATA部分,注释等。否则,XML将不格式良好,解析器将拒绝您的XML。
如果由于某种原因需要在属性中存储XML数据,则需要转义XML标记,将所有<
个字符替换为<
个实体。当转义属性值时,您的示例元素应如下所示。
<option id="67" ddmmyyyy="11 jan 2011" text="This is a text <p> ok</p> & not only a text!!" />
另请注意&amp;不允许使用字符,它总是需要转义为&
。转义属性值还意味着解析器不会将其内容作为包含元素的标记返回,而是将其作为包含例如<
个字符的文本字符串返回。这需要在解释此属性值的代码中加以考虑。
如果要将数据保留为XML结构,则应将数据表示为元素和文本内容,而不是属性值。
答案 2 :(得分:0)