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 建议)。