2010-07-24 35 views
0

J'ai un fichier xml.Lecture XML avec ElementTree

<Item>Item value</Item> 
<Itemdate>24/07/2010</Itemdate> 
<Total>1</Total> 
<Itemcategory>Income</Itemcategory> 
<GroupName>Salary</GroupName> 
<EditId>undefined</EditId> 

<Item>Item value</Item> 
<Itemdate>24/07/2010</Itemdate> 
<Total>1</Total> 
<Itemcategory>Income</Itemcategory> 
<GroupName>Salary</GroupName> 
<EditId>undefined</EditId> 

<Item>Item value</Item> 
<Itemdate>24/07/2010</Itemdate> 
<Total>1</Total> 
<Itemcategory>Income</Itemcategory> 
<GroupName>Trfr fm Savings</GroupName> 
<EditId>undefined</EditId> 

<Item>Item value</Item> 
<Itemdate>24/07/2010</Itemdate> 
<Total>1</Total> 
<Itemcategory>Income</Itemcategory> 
<GroupName>Dividend</GroupName> 
<EditId>undefined</EditId> 

<Item>Item value</Item> 
<Itemdate>24/07/2010</Itemdate> 
<Total>1</Total> 
<Itemcategory>Income</Itemcategory> 
<GroupName>Dividend</GroupName> 
<EditId>undefined</EditId> 

Maintenant, je veux obtenir le tout, itemdate, etc sont séparément using elementtree. Est-ce que quelqu'un peut m'aider?

Mfg,

Nimmy

+1

Si vous avez une option pour restructurer ce XML, vous devriez. XML comme cela devrait être imbriqué, avec les propriétés de chaque élément apparaissant dans chaque élément ''. – sje397

Répondre

5

Comme sje397 écrit dans le commentaire, vous devez restructurer si vous avez une option. Soit mettre tout en balises d'article:

<item> 
    <value>...</value> 
    <date>...</date> 
    ... 
</item> 

Ou en utilisant les attributs:

<item value="..." date="..." ... /> 

Ce sont largement équivalentes (les attributs d'une apparaissent dans un ordre bien, alors que les balises peuvent être contraints à un certain ordre par l'intermédiaire du schéma/DTD) à l'exception de ce que vous devez faire et je pense que c'est une question de goût. Bien sûr, vous pouvez mélanger les deux, mais cela compliquera l'extraction de l'information (car vous aurez besoin d'utiliser des méthodes séparées pour obtenir des attributs vs des étiquettes). D'une manière ou d'une autre, vous obtenez juste une étiquette d'article et obtenez ensuite tous ses [enfants | attributs].

Si le xml doit absolument rester de cette façon, vous pouvez vous intéresser aux parseurs SAX, qui préservent intrinsèquement l'ordre des tags. Cela nécessite toutefois une approche basée sur les événements.