是否允许转义XML标记的字符?在什么情况下?

时间:2011-05-16 16:23:33

标签: xml upnp

是否遵循有效的UPnP Control响应?他们是否必须以<OutProfile>的值逃避这些字符? UPnP device architecture1.1(sec 3.2.4)表示如果参数值包含&lt;,&amp;等字符,则应对其进行转义。等我认为它不应该,如果它的xml。任何人都可以参考一些可以清除这种混淆的标准文件吗?我的观点是,在以下情况下使用转义字符是不必要的,并且使调试变得困难。但我需要通过对同行的坚实引用来解释这一点。

<?xml version="1.0"?><s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetABCResponse
xmlns:u="urn:schemas-upnp-org:service:Client:1"><OutProfile>&lt;cProfile&gt;
 &lt;cID&gt;0&lt;/cID&gt;
 &lt;iconPreference&gt;
  &lt;mimetype&gt;image/bmp&lt;/mimetype&gt;
  &lt;width&gt;32&lt;/width&gt;
  &lt;height&gt;32&lt;/height&gt;
  &lt;depth&gt;24&lt;/depth&gt;
 &lt;/iconPreference&gt;
&lt;/cProfile&gt;
</OutProfile></u:SetABCResponse></s:Body></s:Envelope>

2 个答案:

答案 0 :(得分:0)

无需手动转义字符。 <![CDATA[ ]]>标记允许您在标记中转义任何内容

<Node>
<![CDATA[<SubNode>Content</SubNode> ]]>
</Node>

http://www.w3schools.com/xml/xml_cdata.asp

答案 1 :(得分:0)

首先,您发布的XML文档是格式良好的XML。

其次,阅读您引用的PDF文档的第3.2.4节不允许推断您的示例XML文档违反了该UPnP规范。 (另一方面,我不能说它符合其中的任何内容,因为我不会读它。)

第三,<OutProfile>的内容是文本节点,换句话说,是字符串。

第四,在没有输出转义的情况下提取和逐步化时,它是另一个格式良好的XML文档。

<?xml version="1.0"?>
<cProfile>
 <cID>0</cID>
 <iconPreference>
    <mimetype>image/bmp</mimetype>
    <width>32</width>
    <height>32</height>
    <depth>24</depth>
 </iconPreference>
</cProfile>

第五,你的开发人员不太可能误解了某些要求。另一方面,可能存在应用原因,他们希望文档完全像这样。

最后,您希望将标记作为文本节点嵌入到XML文档中,最好使用CDATA部分,因为这样更容易。另一方面,没有理由不去追逐角色。