Bonjour,

J'ai un fichier XML, encodé en windows-1256, parce qu'il contient des données en arabe.
J'essaye de lire le contenu du fichier, d'en modifier quelques données, et d'écrire le résultat.

Le script python que j'utilise ressemble à cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- coding:Latin-1 -*-
import re
from xml.dom import minidom
 
xmldoc = minidom.parse("d:\\exemple.xml")
xmlTrames = xmldoc.getElementsByTagName("p")
 
# Récupération des données en provenance du XML
data = xmlTrames[0].firstChild.data
 
# On réinjecte dans le stream XML
new_data = data
xmlTrames[0].firstChild.data = new_data
 
fic_xml = open("d:\\exemple.xml", "w")
fic_xml.write(xmldoc.toxml())
fic_xml.close()
Le fichier XML utilisé est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?xml version="1.0" encoding="windows-1256" ?> 
- <Items>
- <Item>
  <p>لا شيء</p> 
  </Item>
  </Items>
A celà, deux problèmes :

1 - J'ai une erreur lors de l'écriture du fichier du type : "UnicodeEncodeError : 'ascii' codec can't encode characters in position 52-53 : ordinal not in range (128)

2 - Y a-t-il une meilleure manière de procéder pour répercuter les modifications qu'un fichier XML aura subi après traitement des données ?

Merci pour toute votre attention.