2010-07-24 68 views
0

我有一个xml文件。使用ElementTree读取XML

<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> 

现在我想要得到的所有项目,itemdate等是单独使用elementtree。任何人都可以帮助我?

RGDS,

Nimmy

+1

如果您有一个选项来重新构建该XML,您应该。像这样的XML应该是嵌套的,每个项目的属性出现在每个“”元素中。 – sje397 2010-07-24 10:23:30

回答

5

由于sje397在评论中写道,你应该重组,如果你有一个选择。要么把它全部纳入项目标签:

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

或者使用属性:

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

那些在很大程度上是等同(属性一按任何顺序出现,虽然,而标签可以通过模式被迫进入一个特定的顺序/ DTD),除了你必须和我认为这是一个品味问题。当然,你可以混合使用这两种方法,但这会使提取信息复杂化(因为你需要使用独立的方法来获取属性与标签)。无论哪种方式,您只需获取一个物品标签,然后获取其所有[children |属性]。

如果XML绝对有保持这样,你可能想看看SAX解析器,其本质上保持标签的顺序。尽管如此,它需要基于事件的方法。