Parser un fichier xml et remplir un autre avec les infos récupérées
Bonjour,
je souhaiterai parser un fichier xml de ce type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:updatable='true'>
<s:AttributeType name='order_nr' rs:number='1' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='int' dt:maxLength='4' rs:precision='0' rs:fixedlength='true'/>
</s:AttributeType>
<s:AttributeType name='customer_firstname' rs:number='18' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_lastname' rs:number='19' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_email' rs:number='20' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_address1' rs:number='21' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_address2' rs:number='22' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_zip' rs:number='25' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_city' rs:number='26' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_country' rs:number='27' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='2' rs:precision='0'/>
</s:AttributeType>
<s:AttributeType name='customer_phone' rs:number='28' rs:nullable='true' rs:write='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50' rs:precision='0'/>
</s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row order_nr='625323' customer_firstname='Toto' customer_lastname='Titi' customer_email='tata@gmail.com' customer_address1='' customer_address2='' customer_zip='' customer_city='' customer_phone=''/>
</rs:data>
</xml> |
et remplir le template suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <Commande>
<NumeroExpediteur></NumeroExpediteur>
<Identite>
<PrenomExpediteur></PrenomExpediteur>
<NomExpediteur></NomExpediteur>
</Identite>
<Coordonnee>
<AdresseExpediteur1></AdresseExpediteur1>
<AdresseExpediteur2></AdresseExpediteur2>
<CodePostalExpediteur></CodePostalExpediteur>
<VilleExpediteur></VilleExpediteur>
</Coordonnee>
<TelephoneExpediteur></TelephoneExpediteur>
<EmailExpediteur></EmailExpediteur>
</Commande> |
ou
Citation:
order_nr <=> NumeroExpediteur
customer_firstname <=> PrenomExpediteur
customer_lastname <=> NomExpediteur
customer_email <=> EmailExpediteur
etc
Les couples sont dans l'ordre dans les deux fichiers mais ce sera pas forcément le cas, il faut pouvoir associer order_nr <=> NumeroExpediteur et de même pour les autres balises
et dans le cas ou dans le parsing on n'a une chaine vide en valeur comme dans customer_address1=''
On remplacera dans le template
Code:
<AdresseExpediteur1></AdresseExpediteur1>
par
Code:
<AdresseExpediteur1 />
Auriez-vous des exemples ou des idées pour que je puisse coder cela?
Merci