我有一个XML文件,如下:
<customer>
<customerdetails id="80">
<account id="910">
<attributes>
<premium>true</premium>
<type>mpset</type>
</attributes>
</account>
<account id="911">
<attributes>
<premium>true</premium>
<type>spset</type>
</attributes>
</account>
</customerdetails>
</customer>
需要解析文件并从相同的情况下获取必要的详细信息,因为我使用了Python的LXML库。
使用它可以从XML文件中获取详细信息,例如,我可以从文件的特定标签中获取文本。
from lxml import etree
def read_a_customer_section(self):
root = self.parser.getroot()
customer_id = "80"
account_id = "910"
type_details = root.findtext("customerdetails[@id='"+customer_id+"']/account[@id='"+account_id+"']/attributes/type")
print type_details
dd = ConfigParserLxml("dummy1.xml").read_a_customer_section()
使用此功能,我可以按预期获取特定标签的文本。
但是现在我需要根据文本获得父级标签。
例如,如果我将" mpset"输入为输入,我应该能够获得 "帐户"属性,我还需要找到" customerdetails" 属性。
有人帮助我。
希望这很清楚,否则让我知道我会尝试更清楚。
In [3]: tree.xpath('//account[.//type="mpset"]/@id')
Out[3]: ['910']
或:
In [4]: tree.xpath('//*[.//type="mpset"]/@id')
Out[4]: ['80', '910'] # this will return all the id attribute.
//
root节点的后代或自我。
.
电流节点
.//
当前节点的后代或自我。
.//type="mpset"
当前节点的下降标签类型的字符串值是 mpset
@id
获取id
属性
*
是通配符,匹配任何标签