栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在ElementTree中使用XPath

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在ElementTree中使用XPath

您有2个问题。

1)

element
仅包含根元素,而不包含整个文档。它是Element类型而不是ElementTree类型。

2)如果将命名空间保留在XML中,则搜索字符串需要使用命名空间。

要解决问题1:

您需要更改:

element = ET.parse(fp).getroot()

至:

element = ET.parse(fp)

要解决问题2:

您可以从XML文档中删除xmlns,如下所示:

<?xml version="1.0"?><ItemSearchResponse>  <Items>    <Item>      <ItemAttributes>        <ListPrice>          <Amount>2260</Amount>        </ListPrice>      </ItemAttributes>      <Offers>        <Offer>          <OfferListing> <Price>   <Amount>1853</Amount> </Price>          </OfferListing>        </Offer>      </Offers>    </Item>  </Items></ItemSearchResponse>

使用此文档,您可以使用以下搜索字符串:

e = element.findall('Items/Item/ItemAttributes/ListPrice/Amount')

完整代码:

from elementtree import ElementTree as ETfp = open("output.xml","r")element = ET.parse(fp)e = element.findall('Items/Item/ItemAttributes/ListPrice/Amount')for i in e:  print i.text

问题2的替代解决方案:

否则,您需要为每个元素在srearch字符串中指定xmlns。

完整代码:

from elementtree import ElementTree as ETfp = open("output.xml","r")element = ET.parse(fp)namespace = "{http://webservices.amazon.com/AWSECommerceService/2008-08-19}"e = element.findall('{0}Items/{0}Item/{0}ItemAttributes/{0}ListPrice/{0}Amount'.format(namespace))for i in e:    print i.text

都打印:

2260



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号