2
我想用ElementTree來解析一個xml文件。考慮到下面的xml,我需要寫入文件'chain_id'(在標題'm'下)和'name'(在標題'r'下),但前提是符合以下條件:1)'css'(標題下的 'i')是不-0,和2) '的BSA'> 0用python解析xml - 根據祖父母的兄弟姐妹選擇孩子
我可以保持 '名稱' 的軌道,當第二條件被滿足:
for r in root.iter('r'):
name = r.find('name').text
bsa = r.find('bsa').text
if eval(bsa) > 0:
print name
但我結束因爲我無法弄清楚如何在第一條標準上做出這個條件。我已經看過Xpath,但是我很難實現它。總之,如果'm'('css')的兄弟姐妹具有一定的價值,我只對'm'的孩子和曾孫有興趣。
xml文件相當大,大於20'i,每個'i'至少有2個'm',每個'm'大於100'r。
我寧願使用標準的Python的方法來做到這一點(不限於lxml或美麗的石頭湯)
<pi>
<pe>
<ni>20</ni>
<i>
<id>1</id>
<css>-0</css>
<m>
<id>1</id>
<chain_id>B</chain_id>
<int_nres>19</int_nres>
<rs>
<r>
<ser_no>1</ser_no>
<name>MET</name>
<seq_num>0</seq_num>
<asa>157.15526405</asa>
<bsa>0</bsa>
</r>
<r>
.
.
.
</r>
<m>
.
.
.
</m>
</i>
<i>
.
.
.
</i>
</pe>
</pi>
謝謝你的建議。由於某些原因,.findall()不會返回任何內容,但.iter()會返回。我試圖用你的建議,但用.iter()代替.findall()。我會讓你知道它是否有效。 – apo 2013-03-27 19:24:27
爲什麼你想在所有節點上迭代...只是找到 - >該節點1 - >然後findall或找到 - > node2 ..。 !這種方式會更好,更快。 。 – namit 2013-03-27 19:28:15
看到更新後的帖子.. – namit 2013-03-27 19:29:11