0
我有一个dict映射每个xml标签为一个dict键。我想循环访问xml中的每个标记和文本字段,并将其与另一个字典中的关键字dict键值进行比较。python lxml通过所有标签循环
<2gMessage>
<Request>
<pid>daemon</pid>
<emf>123456</emf>
<SENum>2041788209</SENum>
<MM>
<MID>jbr1</MID>
<URL>http://jimsjumbojoint.com</URL>
</MM>
<AppID>reddit</AppID>
<CCS>
<Mode>
<SomeDate>true</CardPresent>
<Recurring>false</Recurring>
</Mode>
<Date>
<ASCII>B4788250000028291^RRR^15121015432112345601</ASCII>
</Date>
<Amount>100.00</Amount>
</CCS>
</Request>
</2gMessage>
的代码,我到目前为止有:
parser = etree.XMLParser(ns_clean=True, remove_blank_text=True)
tree = etree.fromstring(strRequest, parser)
for tag in tree.xpath('//Request'):
subfields = tag.getchildren()
for subfield in subfields:
print (subfield.tag, subfield.text)
return strRequest
但是,这只是打印这是请求的直接子标签,我希望能够获得对儿童的subchildren如果它是一个实例在同一个循环中。我不想硬编码值,因为标签和结构可能会改变。
我尝试运行你的代码,但给错误。除此之外,'xml'也不好形成。 – Birei 2015-02-09 17:22:23
你尝试过[美丽的汤4](http://www.crummy.com/software/BeautifulSoup/)吗?非常直观的DOM导航。 _“Beautiful Soup位于流行的Python解析器之上,比如** lxml **和html5lib,允许您尝试不同的解析策略或交易速度来获得灵活性。”_ – 2015-02-09 17:34:35