[genropy] Re: bag.toXml() infedele

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy@xxxxxxxxxxxxx
  • Date: Thu, 10 Dec 2015 23:29:57 +0100


Il giorno 10 dic 2015, alle ore 22:13, Alessandro Tufi
<alessandro.tufi@xxxxxxxxx> ha scritto:



On 12/10/2015 06:52 PM, Giovanni Porcari wrote:
metti:

tagName = re.sub(r'[^\w:.-]', '_', originalTag).replace('__', '_')



cioè col - dopo w:

fammi sapere se risolve che lo mettiamo ufficiale..


Perfetto, funziona. Non avevo notato che trasformava i "-" in "_"

Facendo le prove su un file più complesso è venuto fuori un altro problema:

Questa:
<?xml version="1.0" encoding="UTF-8"?>
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" >
<style:font-face style:name="Arial" />
test ( eheh ) , prova
</office:document-content>

Diventa
<?xml version="1.0" ?>
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0">
<style:font-face style:name="Arial"/>
<_>test ( eheh ) , prova</_>
</office:document-content>

Nella prima riga scompare l'enconding
Inoltre appare lo strano tag "<_>" , il quale scompare se rimuovo il nodo
precedente "style:font-face".

In un esempio più complesso questo nuovo tag trasforma
<text:p text:style-name="Title">
Open Document Format for Office Applications (
<text:user-field-get
text:name="CommitteeName">OpenDocument</text:user-field-get>
)
<text:user-field-get text:name="Version">v1.1</text:user-field-get>
<text:user-field-get text:display="none" text:name="EditorialStatus"/>
</text:p>

In
<text:p text:style-name="Title">
<_>Open Document Format for Office Applications (</_>
<text:user-field-get
text:name="CommitteeName">OpenDocument</text:user-field-get>
<_>)</_>
<text:user-field-get text:name="Version">v1.1</text:user-field-get>
<text:user-field-get text:display="none" text:name="EditorialStatus"/>
</text:p>

E a video scompare quindi la prima parte della frase
E' creato con libreoffice, suppongo sia un xml valido ma non ci scommetterei


PS: Ci sto solo giocando, solo che mi aspetto di non vedere modifiche nell'xml




Il primo problema è che non ha messo l'encoding ma basta che lo passi quando fai
la chiamata toXml e si risolve.


Il secondo problema è che questo xml è mixed ovvero mescola la sintassi xml
con testo puro.

Nel momento in cui costruisco la bag dal parsing il testo puro
viene messo in tag di tipo <_> </_> per poter essere inserito
con una label nella bag.

Non essendomi mai posto il problema della successiva ritrasformazione
in xml non è stata fatta l'operazione inversa ma è banale.

Invece l'ultimo problema è più complesso. Devo vedere che fa saxParser
in una situazione simile.

Pur essendo un caso d'uso diverso dalla semplice serializzazione
e deserializzazione di Bag mi piacerebbe pulire questo aspetto e quindi
proverò a vedere se si riesce a fare andare.


Ciao

G







Other related posts: