0
我正在嘗試查找所有節點的祖先。使用lxml查找所有xml節點python的祖先
我的XML,
xmldata="""
<OrganizationTreeInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/YSM.PMS.Web.Service.DataTransfer.Models">
<Name>Parent</Name>
<OrganizationId>4345</OrganizationId>
<Children>
<OrganizationTreeInfo>
<Name>A</Name>
<OrganizationId>123</OrganizationId>
<Children>
<OrganizationTreeInfo>
<Name>B</Name>
<OrganizationId>54</OrganizationId>
<Children/>
</OrganizationTreeInfo>
</Children>
</OrganizationTreeInfo>
<OrganizationTreeInfo>
<Name>C</Name>
<OrganizationId>34</OrganizationId>
<Children>
<OrganizationTreeInfo>
<Name>D</Name>
<OrganizationId>32323</OrganizationId>
<Children>
<OrganizationTreeInfo>
<Name>E</Name>
<OrganizationId>3234</OrganizationId>
<Children/>
</OrganizationTreeInfo>
</Children>
</OrganizationTreeInfo>
</Children>
</OrganizationTreeInfo>
</Children>
「」」
用於例如如果OrganizationId的我輸入值3234,那麼輸出應該是這樣的,
{'parent':4345,'C':34,'D':32323,'E':3234 }
這裏是我的嘗試,
root = ET.fromstring(xmldata)
for target in root.xpath('.//OrganizationTreeInfo/OrganizationId[text()="3234"]'):
d = {
dept.find('Name').text: int(dept.find('OrganizationId').text)
for dept in target.xpath('ancestor-or-self::OrganizationTreeInfo')
}
print(d)
但它沒有給出任何輸出。我無法找出它有什麼問題。
我不明白你的輸出。用'323'不會是'AB'。而且,A'節點也不是父母嗎? – Birei 2015-02-11 10:53:08
@Birei對不起,我只是更新了我的問題,請看看。 – Guest00983835 2015-02-11 11:14:25
現在它似乎更好,但仍然不正確(我認爲)。現在'3234'不出現在'xml'文件中。 – Birei 2015-02-11 11:16:51