<&> преобразуются в> <и т. д. - PullRequest
0 голосов
/ 18 июня 2009

Я использую библиотеку MSXMl для разбора xml

после того, как я вызываю put_text, а затем get_xml

на выходе будет <&> преобразовано в &lt; & &gt;

Как мне от этого избавиться?

Ответы [ 4 ]

4 голосов
/ 18 июня 2009

<и> запрещено использовать внутри текста и должны быть закодированы как & gt и & lt. Единственный способ избежать этого - создать раздел CDATA для текста, содержащего их. Но вам действительно не нужно, если вы намереваетесь читать XMLT с помощью MS XML - он будет прекрасно декодировать эти символы, и вы прекрасно получите <и> в извлеченном тексте.

3 голосов
/ 18 июня 2009

Хорошо, вы конвертируете из обычного текста в текст XML.
Такое поведение я бы ожидал.

Если вы хотите вставить оригинальную строку, попробуйте преобразовать обратно в текст с помощью get_text ().

Если вы не хотите, чтобы put_text () кодировал текст без кодировки <и>, тогда он должен находиться внутри раздела CData.

<![CDATA[    Text that can include < and > without encoding  ]]>
0 голосов
/ 18 июня 2009

Если вы хотите, чтобы он был включен в текст, хорошо, что он экранирован. Каждый pareser xml будет обратно экранировать текст.

Если вы хотите использовать его в качестве элементов XML, вы не можете создавать их с помощью put_text, но нужно создать дерево таким образом

dataNode=xmlDoc.createElement("data")

idNode=xmlDoc.createElement("id")
textNode=xmlDoc.createTextNode("17")
idNode.appendChild(textNode)
nameNode=xmlDoc.createElement("name")
textNode=xmlDoc.createTextNode("Uday")
nameNode.appendChild(textNode)
...

dataNode.appendChild(idNode)
dataNode.appendChild(nameNode)
...

parentNode.appendChild(dataNode)

что может выглядеть лучше, если вы смотрите глазами и хотите, чтобы текст был записан в файл, вы можете использовать раздел cdata.

newCDATA=xmlDoc.createCDATASection("<data><id>17</id>...</data>")
parentNode.appendChild(newCDATA)
0 голосов
/ 18 июня 2009

Вы получаете &lt или &lt;?

На их конце должна быть точка с запятой, чтобы быть действительной сущностью.

...