2016-11-06 5 views
0

n個のSubElementsを作成するには?要素の数は、指定された値(count)で前もって定義されていました。要素の名前と値はすべての要素で同じです。 例:Python XML - n個のSubElementsを作成する

<root> 
     <selem>-9999</selem> 
     <selem>-9999</selem> 
     <selem>-9999</selem> 
     <selem>-9999</selem> 
       . 
       . 
       . 
       n 
</root> 

私はあなたがそのようなリスト内包内部変数の割り当てなどのステートメントを置くことができない

file_count = open('file_count.xml','r') 
data = file_count.read() 
file_count.close() 
dom = parseString(data) 
count = len(dom.getElementsByTagName('timePosition')) 

no_data = '-9999' 
top = etree.Element('root') 
children = [ 
    etree.SubElement(top, 'selem').text = no_data 
    for i in xrange(count) 
    ] 
top.extend(children) 
print etree.tostring(top) 
no_data_xml = etree.ElementTree(top) 
no_data_xml.write(new.xml') 

TNX

答えて

1

のようなものを試してみました。ただ、forループプレーンを使用します。

for i in xrange(count): 
    elem = etree.SubElement(top, 'selem') 
    elem.text = no_data 
    top.append(elem) 
+0

これだけです! Thanx – kamfulebu

1

SubElement自動的に要素が親、明示的に拡張/追加のためにその必要はありませんです追加します。リストの理解度を使用する必要はありません。forループを使用してください:

with open('file_count.xml','r') as file_count: 
    data = etree.prase(file_count) 
count = len(data.findall('.//timePosition')) 

no_data = '-9999' 
top = etree.Element('root') 
for i in xrange(count): 
    etree.SubElement(top, 'selem').text = no_data 
no_data_xml = etree.ElementTree(top) 
no_data_xml.write(new.xml') 
+0

ありがとうございます。 prase - > parseのみを編集します。 xrange(count)のi - > for xrange(count): – kamfulebu

+0

@kamfulebu:ありがとう – Daniel

関連する問題