Générer un document xml en python et lxml
J'ai ce code xml à partir de sql, et je veux faire la même chose en python 2.7 et lxml
<?xml version="1.0" encoding="utf-16"?>
<results>
<Country name="Germany" Code="DE" Storage="Basic" Status="Fresh" Type="Photo" />
</results>
Maintenant j'ai:
from lxml import etree
# create XML
results= etree.Element('results')
country= etree.Element('country')
country.text = 'Germany'
root.append(country)
filename = "xmltestthing.xml"
FILE = open(filename,"w")
FILE.writelines(etree.tostring(root, pretty_print=True))
FILE.close()
Savez-vous comment ajouter le reste de ses attributs?
w3.org/DOM
Avez-vous déjà essayé cela? pays.le texte ajoute "l'Allemagne", comme le texte entre les balises, c'est à dire
oui, j'ai essayé, mais je ne sais pas comment ajouter un autre attributs
Là vous allez encore une fois. "Un autre". Vous n'avez pas TOUS les attributs. Comment faire pour ajouter des attributs est dans les docs.
Avez-vous déjà essayé cela? pays.le texte ajoute "l'Allemagne", comme le texte entre les balises, c'est à dire
<country>Germany</text>
, non pas comme un attribut, qui est ce que vous voulez/réclamation.oui, j'ai essayé, mais je ne sais pas comment ajouter un autre attributs
Là vous allez encore une fois. "Un autre". Vous n'avez pas TOUS les attributs. Comment faire pour ajouter des attributs est dans les docs.
OriginalL'auteur user278618 | 2010-12-17
Vous devez vous connecter pour publier un commentaire.
Note ce imprime également la NOMENCLATURE
"UTF-16"
codec ajoute-il. Le"utf-8"
on ne le fait pas.OriginalL'auteur Marco Mariani
Eh bien oui, c'est exact, mais mon objectif principal a été de montrer comment il est fait plutôt que des bonbons pour les yeux 😉
Mon xml est maintenant: <?xml version='1.0' encoding='utf-16'?>㰀爀攀猀甀氀琀猀㸀㰀䌀漀甀渀琀爀礀 䌀漀搀攀㴀∀䐀䔀∀ 匀琀漀爀愀最攀㴀∀䈀愀猀椀挀∀ 渀愀洀攀㴀∀䜀攀爀洀愀渀礀∀⼀㸀㰀⼀爀攀猀甀氀琀猀㸀
En exécutant simplement le code ci-dessus ou votre propre code?
n'est probablement pas à l'aide de Windows. Ce qui se passe est que lxml écrit un saut de ligne (0A 00 en UTF-16LE) entre l'en-tête XML et le corps. C'est alors agressé par Gagner en mode texte pour devenir 0D 0A 00 qui fait tout après que ressembler à UTF-16BE, partant, les Chinois etc caractères lorsque vous l'affichez. Vous pouvez contourner ce problème dans ce cas à l'aide de "wb" au lieu de "w" lorsque vous ouvrez le fichier. Cependant, je voudrais vous suggérons fortement d'utiliser 'UTF-8' (écrit EXACTEMENT comme ça) que votre encodage. Pourquoi êtes-vous en utilisant UTF-16? Vous aimez les gros fichiers et/ou des problèmes bizarres?
OriginalL'auteur user225312
La promotion de mon commentaire de réponse:
@sukbir est probablement pas à l'aide de Windows. Ce qui se passe est que lxml écrit un saut de ligne (0A 00 en UTF-16LE) entre l'en-tête XML et le corps. C'est alors agressé par Gagner en mode texte pour devenir 0D 0A 00 qui fait tout après que ressembler à UTF-16BE, partant, les Chinois etc caractères lorsque vous l'affichez. Vous pouvez contourner ce problème dans ce cas à l'aide de "wb" au lieu de "w" lorsque vous ouvrez le fichier. Cependant, je voudrais vous suggérons fortement d'utiliser 'UTF-8' (écrit EXACTEMENT comme ça) que votre encodage. Pourquoi êtes-vous en utilisant UTF-16? Vous aimez les gros fichiers et/ou des problèmes bizarres?
OriginalL'auteur John Machin
Enregistrer de fichier XML
au lieu de:
OriginalL'auteur Habib