<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><style>p {margin:0px;padding:0px;} blockquote { border: 0px; margin-top: 0px; margin-bottom: 0px; }</style></head><body style="">
<p>Hi,<br><font color="#000000" face="Verdana" size="2"><br><blockquote type="cite">&gt; it's not related to XPath, it's just that you change the order of the children<br>&gt; in your test:<br>&gt; <br>&gt; -------------------------<br>&gt; import lxml.etree<br>&gt; import lxml.objectify<br>&gt; <br>&gt; [...]<br>&gt; <br>&gt; gives the same result. I don't even think it's related to objectify.</blockquote></font></p><p>&nbsp;</p><p><font color="#000000" face="Verdana" size="2">Yep, right. Here's without any objectify-ism:</font></p><p>&nbsp;</p><p><font color="#000000" face="Verdana" size="2">&gt;&gt;&gt; from lxml import etree<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; xml = etree.fromstring(<br>...&nbsp;&nbsp;&nbsp;&nbsp; '&lt;a xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;'<br>...&nbsp;&nbsp;&nbsp;&nbsp; '&lt;b name="b1"&gt;&lt;title py:pytype="str"&gt;tit&lt;/title&gt;&lt;text&gt;foo&lt;/text&gt;&lt;/b&gt;'<br>...&nbsp;&nbsp;&nbsp;&nbsp; '&lt;b name="b2"&gt;&lt;text&gt;bar&lt;/text&gt;&lt;/b&gt;&lt;/a&gt;')<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; print etree.tostring(xml, pretty_print=True)<br>&lt;a xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;<br>&nbsp; &lt;b name="b1"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;title py:pytype="str"&gt;tit&lt;/title&gt;<br>&nbsp;&nbsp;&nbsp; &lt;text&gt;foo&lt;/text&gt;<br>&nbsp; &lt;/b&gt;<br>&nbsp; &lt;b name="b2"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;text&gt;bar&lt;/text&gt;<br>&nbsp; &lt;/b&gt;<br>&lt;/a&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; foo = xml[0]<br>&gt;&gt;&gt; bar = xml[1]<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; print etree.tostring(xml, pretty_print=True)<br>&lt;a xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;<br>&nbsp; &lt;b name="b1"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;title py:pytype="str"&gt;tit&lt;/title&gt;<br>&nbsp;&nbsp;&nbsp; &lt;text&gt;foo&lt;/text&gt;<br>&nbsp; &lt;/b&gt;<br>&nbsp; &lt;b name="b2"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;text&gt;bar&lt;/text&gt;<br>&nbsp; &lt;/b&gt;<br>&lt;/a&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; xml[0] = bar<br>&gt;&gt;&gt; xml.append(foo)<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; print etree.tostring(xml, pretty_print=True)<br>&lt;a xmlns:py="http://codespeak.net/lxml/objectify/pytype"&gt;<br>&nbsp; &lt;b name="b2"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;text&gt;bar&lt;/text&gt;<br>&nbsp; &lt;/b&gt;<br>&nbsp; &lt;b name="b1"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;title pytype="str"&gt;tit&lt;/title&gt;<br>&nbsp;&nbsp;&nbsp; &lt;text&gt;foo&lt;/text&gt;<br>&nbsp; &lt;/b&gt;<br>&lt;/a&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; print etree.__version__<br>2.0.alpha4<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; </font></p><p>&nbsp;</p><p>FWIW this also fails with older versions, but:</p><p>&nbsp;</p><p>- 1.2.1 fails with the objectify version, but not the "pure" etree one</p><p>- 1.3beta&nbsp; fails with the objectify version, but not the "pure" etree one</p><p>&nbsp;</p><p>Holger&nbsp;</p><p>&nbsp;</p><p></p><p><font></font></p><p></p><p></p><div class="signature"><br /><br /><br />-- <br />GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS.<br />Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail</div></body></html>