2017-06-27 11 views
0

私は、ツリーからノードを抽出し、それを新しいツリーにしてファイルに書き込む方法を探しています。この例ではElementtree:ノードを抽出してファイルに書き込む

<content> 
    <book id="A"> 
     <chapter /> 
     <chapter /> 
    </book> 
    <book id="B"> 
    <book id="C"> 
</content> 

それがルート要素として<book>とa.xmlになるべき@ブックのようになります。

<book id="A"> 
    <chapter /> 
    <chapter /> 
</book> 

私はElementTreeのを使用しています。私の最初の試みはforループ内のすべての本を見つけ、.writeまたは.tostringを使用することでしたが、これはまったく機能しませんでした。コンテンツ[< Element 'book' at 0x00000000031DD1D8]] :)

答えて

0

あなたはfindまたはfindallで最初の要素bookを見つけることができます:

import xml.etree.ElementTree as ET 
data_as_string=""" 
<content> 
    <book id="A"> 
     <chapter /> 
     <chapter /> 
    </book> 
    <book id="B"></book> 
    <book id="C"></book> 
</content> 
""" 
root = ET.fromstring(data_as_string) 
print ET.tostring(root.findall('book')[0]) 
print ET.tostring(root.find('book')) 

それが印刷されます:

<book id="A"> 
     <chapter /> 
     <chapter /> 
    </book> 

<book id="A"> 
     <chapter /> 
     <chapter /> 
    </book> 
関連する問題