我得到了这个xml文件:
<ItemArray>
<Item>
<GiftIcon>0</GiftIcon>
<HitCounter>NoHitCounter</HitCounter>
<Quantity>1</Quantity>
<TimeLeft>P9DT17H35M6S</TimeLeft>
<Title>Table</Title>
</Item>
<Item>
<GiftIcon>0</GiftIcon>
<HitCounter>NoHitCounter</HitCounter>
<Quantity>1</Quantity>
<TimeLeft>PT0S</TimeLeft>
<Title>Chair</Title>
</Item>
</ItemArray>如果"TimeLeft“不是"PT0S”,我想返回"Title“:
到目前为止,我得到了这样的结论:
itemList = response.getElementsByTagName('Item')
children = itemList[0].childNodes
for child in children :
if child.tagName == "TimeLeft":
if child.childNodes[0].nodeValue == "PT0S":
print "ping"但我不知道如何从那里返回"Title“值,有什么更优雅的方法来返回子节点的值,这取决于另一个子节点是真还是假?
发布于 2013-01-15 19:23:59
使用xpath
doc.xpath('.//item[timeleft/text()!="PT0S"]/title/text()')
发布于 2013-01-15 22:22:30
你可以使用ElementTree的API和简单的列表理解:
import xml.etree.ElementTree as ET
tree = ET.parse('your_xml_file.xml')
root = tree.getroot()
titles = [item.find('Title').text for item in root.findall('Item') if item.find('TimeLeft').text != 'PT0S']titles将是TimeLeft不是PT0S的项目的标题列表。在我看来,这比基于XPath的解决方案(如果您不熟悉XPath)更容易阅读。
https://stackoverflow.com/questions/14336492
复制相似问题