J'ai besoin de traiter quotidiennement des documents XML de différents formats dans des enregistrements dans une base de données MySQL. Les données dont j'ai besoin de chaque document XML sont entrecoupées d'une bonne quantité de données dont je n'ai pas besoin, et les noms de nœuds de chaque document sont différents. Par exemple:Traitement de XML dans MySQL sous une bonne forme
Source # 1:
<object id="1">
<title>URL 1</title>
<url>http://www.one.com</url>
<frequency interval="60" />
<uselessdata>blah</uselessdata>
</object>
<object id="2">
<title>URL 2</title>
<url>http://www.two.com</url>
<frequency interval="60" />
<uselessdata>blah</uselessdata>
</object>
Source # 2:
<object">
<objectid>1</objectid>
<thetitle>URL 1</thetitle>
<link>http://www.one.com</link>
<frequency interval="60" />
<moreuselessdata>blah</moreuselessdata>
</object>
<object">
<objectid>2</objectid>
<thetitle>URL 2</thetitle>
<link>http://www.two.com</link>
<frequency interval="60" />
<moreuselessdata>blah</moreuselessdata>
</object>
... où j'ai besoin ID de l'objet, l'intervalle et l'URL.
Mes idées pour les approches sont:
1.) Avoir une fonction distincte pour analyser chaque document XML et créer itérativement la requête SQL à partir de cette fonction
2.) Avoir une fonction distincte parse chaque document et itérativement ajouter chaque objet à ma propre classe d'objet, et faire le travail SQL par une méthode de classe
3.) En utilisant XSLT pour convertir tous les documents dans un format XML commun, puis en écrivant un analyseur pour ce document.
Les documents XML eux-mêmes ne sont pas très volumineux, car la plupart seront inférieurs à 1 Mo. Je ne prévois pas que leur structure changera souvent (si jamais), mais il y a une forte possibilité que j'aurai besoin d'ajouter et d'enlever d'autres sources au fil du temps. Je suis ouvert à toutes les idées. En outre, désolé si les exemples XML ci-dessus sont tronqués ... ils ne sont pas très importants, juste une idée approximative pour montrer que les noms de nœuds dans chaque document sont différents.
+1: Dans votre cas, les différents documents XML sont vraiment juste différents noms de tag. Ceux-ci, à leur tour, modifient simplement la chaîne XPath que vous utiliseriez dans les fonctions findTree et findall d'ElementTree. Les différentes options d'analyse XML sont vraiment faciles à faire. –