【问题标题】:Escape characters for XML tags allowed? In what cases?是否允许 XML 标记的转义字符?在什么情况下?
【发布时间】:2011-05-16 16:23:33
【问题描述】:

是否遵循有效的 UPnP 控制响应?他们是否必须在 <OutProfile> 的值中转义这些字符? UPnP device architecture1.1(sec 3.2.4) 表示如果参数值包含

<?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>

【问题讨论】:

  • 您应该简单地使用 XML API 来创建您的 XML。它会知道转义规则是什么,这样你就不必了。

标签: xml upnp


【解决方案1】:

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

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

第三,&lt;OutProfile&gt;的内容是一个文本节点,也就是一个字符串。

第四,在没有输出转义的情况下提取和序列化,它是另一个格式良好的 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 部分,因为这样看起来更容易。另一方面,没有理由不使用字符转义。

【讨论】:

    【解决方案2】:

    无需手动转义字符。 &lt;![CDATA[ ]]&gt; 标签允许你在标签中转义任何你想要的东西

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 2016-02-05
      • 2021-09-22
      • 1970-01-01
      • 2018-08-21
      • 2012-08-04
      • 2015-03-26
      相关资源
      最近更新 更多