Escape-символы для тегов XML разрешены?В каких случаях? - PullRequest
0 голосов
/ 16 мая 2011

Следует ли действительный ответ управления UPnP? Должны ли они экранировать эти символы в значении <OutProfile>? Архитектура устройства UPnP.1.1 (с. 3.2.4) говорит, что значение аргумента должно быть экранировано, если оно содержит символы, такие как <, и т. Д. Но я думаю, что это не должно, если это xml. Может кто-нибудь ссылаться на какой-то стандартный документ, который может устранить эту путаницу? Я хочу сказать, что использование экранированных символов в следующем случае не нужно и затрудняет отладку. Но мне нужно объяснить этот момент твердыми ссылками на моих сверстников. </p>

<?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 голосов
/ 16 мая 2011

Во-первых, XML-документ, который вы разместили, представляет собой правильно сформированный XML.

Во-вторых, чтение раздела 3.2.4 документа PDF, на который вы ссылались, не позволяет сделать вывод, что ваш образец документа 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, потому что это проще для глаз. С другой стороны, нет веской причины не идти с побегом персонажа.

0 голосов
/ 16 мая 2011

Нет необходимости вручную экранировать символы. <![CDATA[ ]]> теги позволяют вам избегать всего, что вы хотите внутри тегов

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

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

...