2010-07-24 69 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解析器,其本質上保持標籤的順序。儘管如此,它需要基於事件的方法。