Create xml with elementtree ET and xml escaping

N

nenad.cikic

Hello, I have posted the same in XML group but it seems pretty dead there so I will repost here.

I am new to xml processing in python.
I am looking to create XML. Xml is not too difficult so I thought to createit manually using ElementTree.
First I noted that ET.toString does escape <>& but not " and '
Is that normal?

Since I have also the need to sign the XML I need the ability to create xmlbut without xml escaping (unescaped data are signed).
If i do ET.toString(root,'utf8',text') i do not get the xml tags and if I do ET.toString(root,'utf8') I get escaped chars.
For example:
a=ET.Element('a')
b=ET.SubElement(a,'b')
b.text=u"Å¡Ä‘<>&"

ET.tostring(a,'utf8')
outputs to
"<?xml version='1.0' encoding='utf8'?>\n<a><b>\xc5\xa1\xc4\x91&lt;&gt;&amp;</b></a>"

ET.tostring(a,'utf8',method='text')
outputs to
"\xc5\xa1\xc4\x91<>&"

and I need before singing
<a><b>\xc5\xa1\xc4\x91<>&</b></a>
and after signing
<a><b>\xc5\xa1\xc4\x91&lt;&gt;&amp;</b></a>

Is there some way other than string replace?
Thanks
Nenad
 
M

MRAB

Hello, I have posted the same in XML group but it seems pretty dead there so I will repost here.

I am new to xml processing in python.
I am looking to create XML. Xml is not too difficult so I thought to create it manually using ElementTree.
First I noted that ET.toString does escape <>& but not " and '
Is that normal?
" needs to be encoded when it's in an attribute's value:

<tag value="a quote (&quot;)">

because it's also being used as a delimiter in that case, but elsewhere
it has no special meaning.
Since I have also the need to sign the XML I need the ability to create xml but without xml escaping (unescaped data are signed).

XML with the escaping isn't valid XML.
 
N

nenad.cikic

Il giorno martedì 11 dicembre 2012 20:59:54 UTC+1, MRAB ha scritto:
" needs to be encoded when it's in an attribute's value:



<tag value="a quote (&quot;)">


OK I understood.
because it's also being used as a delimiter in that case, but elsewhere

it has no special meaning.






XML with the escaping isn't valid XML.

Of course I know it is not valid without escaping. But I need it only for signing. I will recheck this if really the web service wants the data to be signed as non escaped.

Thanks
Nenad
 
N

nenad.cikic

Il giorno martedì 11 dicembre 2012 20:59:54 UTC+1, MRAB ha scritto:
" needs to be encoded when it's in an attribute's value:



<tag value="a quote (&quot;)">


OK I understood.
because it's also being used as a delimiter in that case, but elsewhere

it has no special meaning.






XML with the escaping isn't valid XML.

Of course I know it is not valid without escaping. But I need it only for signing. I will recheck this if really the web service wants the data to be signed as non escaped.

Thanks
Nenad
 
S

Stefan Behnel

(e-mail address removed), 12.12.2012 03:19:
Il giorno martedì 11 dicembre 2012 20:59:54 UTC+1, MRAB ha scritto:

Of course I know it is not valid without escaping. But I need it only for signing. I will recheck this if really the web service wants the data to be signed as non escaped.

If it expects non-XML, you should tell the owners of the web service so
that they can fix it.

Stefan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top