![](/img/trans.png)
[英]How do I save an Element Tree to a list based on an attribute in a child tag using Python's LXML module?
[英]Python, List of parents based on child's attribute
我不習慣在Python中解析xml,並且在以下內容上有些卡住。
我有一個XML文件,其中有許多位置表示為節點元素中的緯度,經度值。
位置類型在具有“ k”和“ v”屬性的“ tag”元素中。
<root>
<node id="12345678" lat="50.5" lon="3.0" otherdata="not needed">
<tag k="this_key" v="value_a"/>
<tag k="that_key" v="value_b"/>
</node>
<node ...>
<tag .../>
</node>
</root>
我需要過濾特定的“ v”值,然后使用該值使用父節點ID作為唯一ID來生成經緯度值列表。
我可以得到以下第一個節點
fence = soup.find(v="FenceLine")
prevnode = fence.find_parents("node")
print prevnode
如何返回僅包含具有特定屬性的孩子的父母的集合?
我一直在搜索后嘗試使用BeautifulSoup,但不確定是否最適合我的需求?
如果我有您想要的東西,您可以使用標准的“ xml”庫來實現您的目的:
import xml.etree.ElementTree as ET
def get_dict(value):
root = ET.parse('a.xml')
tmp={}
for node in root.iterfind(".//tag[@v='{0}']/..".format(value)):
tmp[node.get('id')] = (node.get('lat'),node.get('lon'))
return tmp
有趣的部分是:
root.iterfind(".//tag[@v='{0}']/..".format(value))
它返回一個迭代器,該迭代器生成所有具有“ v”屬性與“值”匹配的“標簽”的父標簽。 如果您希望獲取列表而不是迭代器,則可以使用“ findall”方法代替“ iterfind”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.