XMLは私にカーブボールを投げ続けます。理解できるマニュアルを見つけるのに苦労しています。ですから、過去数日間のすべての質問についてお詫び申し上げます。
いずれにせよ、私は次のXMLを持っています:
<clade>
<clade>
<branch_length>0.5</branch_length>
<clade>
<name>MnPV1</name>
<annotation>
<desc>Iotapapillomavirus 1</desc></annotation><chart><group>Iota</group></chart><branch_length>1.0</branch_length>
</clade>
<clade>
これを次のように変更したいと思います。
<clade>
<clade>
<branch_length>0.5</branch_length>
<clade>
<name bgstyle="green">MnPV1</name>
<annotation><desc>Iotapapillomavirus 1</desc><uri>http://pave.niaid.nih.gov/#fetch?id=MnPV1REF&format=Locus%20view&hasStructure=none</uri></annotation><chart><group>Iota</group></chart><branch_length>1.0</branch_length>
</clade>
<clade>
だから私は変えたい:
<name>MnPV1</name>
に:
<name bgstyle="green">MnPV1</name>
キャッチは、私が探しているのは:
tree.xpath('//phylo:group[text()="Iota"]
もしそうなら、「グループ」ノードの「おじ」を取得したいので、「名前」ノードを編集できます
これは私がこれまでに思いついたものです:
tree = lxml.etree.XML(data)
nsmap = {'phylo': 'http://www.phyloxml.org'}
matches = tree.xpath('//phylo:group[text()="Iota"]', namespaces=nsmap)
for e in matches:
uncle=e.getparent().getsibling() #however, getsibling() does not exist...
助けていただければ幸いです(および/またはダミーのlxmlに関する推奨事項)。