[quote=426104:@Paolo Boccolacci]Probabilmente sbaglio nel costrure la stringa per la query in XmlNodeList=xmlDoc.XQL
come ho detto, alcuni nodi presentano dei tag modificati, e anche se riesco ad eliminare tutto
il blocco della firma, se nella query scrivo:
XmlNodeList=xmlDoc.XQL( "//FatturaElettronicaBody//DatiGenerali//DatiGeneraliDocumento//TipoDocumento/text()" )
Non mi restituisce nulla in quanto i primi due tag ( modificati con l’inserimento dell’elemento xmlns=… ) sono:
[code]
[/code]
cancellando la parte aggiunta ovvero facendo diventare i tag in questo modo:
<FatturaElettronicaBody>
<DatiGenerali>
il relativo dato viene recuperato.[/quote]
Nella mia ignoranza sto litigando parecchio su questa cosa… ammetto di essere, specialmente in ambito “xml”, una capra… Io sto risolvendo così (oltre alle varie idee che trovi già in questo thread):
- leggo la stringa dell’xml con un textinputstream
- eseguo una serie di controlli per rendere utilizzabile l’xml, partendo da (il problema che hai segnalato tu)
s=ReplaceAll(s," xmlns=""""","")
- quindi, specialmente in caso di fatture firmate digitalmente, ho parecchio testo inutile sia prima che dopo i dati xml della stringa, e per trovare SOLO la stringa che mi interessa processare, eseguo qualcosa del genere
[code]inizio=InStrB(s,"<p:FatturaElettronica")-1
fine=InStrB(s,"</p:FatturaElettronica>")+LenB("</p:FatturaElettronica>")
if inizio<0 then
inizio=InStrB(s,"<P:FatturaElettronica")-1
fine=InStrB(s,"</P:FatturaElettronica>")+LenB("</P:FatturaElettronica>")
end if
if inizio<0 then
inizio=InStrB(s,"<FatturaElettronica")-1
fine=InStrB(s,"")+LenB("")
end if
if inizio<0 then
'<ns3:FatturaElettronica
inizio=InStrB(s,"<ns3:FatturaElettronica")-1
fine=InStrB(s,"</ns3:FatturaElettronica>")+LenB("</ns3:FatturaElettronica>")
end if
if inizio<0 then
'<ns2:FatturaElettronica - </ns2:FatturaElettronica>
inizio=InStrB(s,"<ns2:FatturaElettronica")-1
fine=InStrB(s,"</ns2:FatturaElettronica>")+LenB("</ns2:FatturaElettronica>")
end if[/code]
(sono le varianti che ho trovato fino ad ora)
- quindi metto tutto nella stringa “s” da processare
s=MidB(s,inizio,fine-inizio)
s="<?xml version=""1.0"" encoding=""utf-8""?>"+s
-e infine mando tutto al motore xml di xojo, in modo da poterlo lavorare
XMLDoc.LoadXml(s)
Come poi vado a processare la stringa, lo leggi qui sopra…