0

是否遵循有效的 UPnP 控制响应?他们是否必须以 的值转义这些字符<OutProfile>UPnP 设备架构 1.1(第 3.2.4 节)表示,如果参数值包含 <、& 等字符,则应该对其进行转义。但我认为,如果是 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>
4

2 回答 2

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 部分,因为这样看起来更容易。另一方面,没有理由不进行角色转义。

于 2011-05-16T19:26:59.250 回答
0

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

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

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

于 2011-05-16T19:09:57.513 回答