当前位置: 首页 > 知识库问答 >
问题:

在python中解析原子提要(XML)[复制]

宇文育
2023-03-14

在我的python程序,我做了一个Rest调用,我得到以下输出。

<?xml version="1.0" encoding="UTF-8"?>
<!--This is to override browser formatting; see server.conf[httpServer] to disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .-->
<?xml-stylesheet type="text/xml" href="/static/atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:s="http://dev.myweb.com/ns/rest" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
  <title>ABC</title>
  <id>123ABC</id>
  <updated>2013-09-05T12:34:51+05:30</updated>
  <author>
    <name>itsme</name>
  </author>
  <s:messages/>
  <entry>
    <title>ABC1</title>
    <id>123ABC123/id>
    <updated>2013-09-05T12:34:51+05:30</updated>
    <author>
      <name>itsyou</name>
    </author>
    <content type="text/xml">
      <s:dict>
        <s:key name="creation_time">1372890070</s:key>
        <s:key name="A:a"><s:dict><s:key name="app"></s:key><s:key name="can_list">1</s:key><s:key name="can_write">1</s:key><s:key name="modifiable">0</s:key><s:key name="owner">itsyou</s:key><s:key name="perms"><s:dict><s:key name="read"><s:list><s:item>admin</s:item></s:list></s:key><s:key name="write"><s:list><s:item>admin</s:item></s:list></s:key></s:dict></s:key><s:key name="removable">0</s:key><s:key name="sharing">system</s:key></s:dict></s:key>
        <s:key name="expiration_time">1404426070</s:key>
        <s:key name="features"><s:list><s:item>A</s:item><s:item>B</s:item><s:item>C</s:item><s:item>D</s:item><s:item>E</s:item><s:item>F</s:item><s:item>G</s:item><s:item>H</s:item><s:item>I</s:item><s:item>J</s:item><s:item>K</s:item><s:item>L</s:item><s:item>M</s:item><s:item>N</s:item><s:item>O</s:item></s:list></s:key>
        <s:key name="group_id">MAC</s:key>
        <s:key name="label">NOT FOR RESALE</s:key>
        <s:key name="max_violations">5</s:key>
        <s:key name="quota">1000000000</s:key>
        <s:key name="relative_expiration_interval">0</s:key>
        <s:key name="relative_expiration_start">0</s:key>
        <s:key name="sourcetypes"><s:list/></s:key>
        <s:key name="stack_id">mac</s:key>
        <s:key name="status">VALID</s:key>
        <s:key name="type">mac</s:key>
        <s:key name="window_period">30</s:key>
      </s:dict>
    </content>
  </entry>
  <entry>
    -----------
  </entry>
  <entry>
    ----------
  </entry>
  <entry>
    ---------
  </entry>
</feed>

我只对领域感兴趣1000000000

我在xml解析上浏览了stackoverflow类似的问题,然后我也在google上搜索,我没有找到任何解决方案

我读Python文档-[http://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.XML]

并尝试使用函数findall()、iterfind()来构建一些逻辑。。。似乎什么都不管用。

如何从上述atom提要(xml)中提取配额字段。

请注意,我尝试了ElementTree的解析函数,但出现了一个错误。我不能使用那个功能。我从restAPI那里得到反馈作为feed。我可以将它保存为文件,然后解析它。

提前感谢

共有1个答案

柯浩壤
2023-03-14
from scrapy.selector import XmlXPathSelector

xml = \
"""
    <content type="text/xml">
      <s:dict>
        <s:key name="group_id">MAC</s:key>
        <s:key name="label">NOT FOR RESALE</s:key>
        <s:key name="max_violations">5</s:key>
        <s:key name="quota">1000000000</s:key>
        <s:key name="relative_expiration_interval">0</s:key>
        <s:key name="relative_expiration_start">0</s:key>
        <s:key name="sourcetypes"><s:list/></s:key>
        <s:key name="stack_id">mac</s:key>
        <s:key name="status">VALID</s:key>
        <s:key name="type">mac</s:key>
        <s:key name="window_period">30</s:key>
      </s:dict>
    </content>
"""

xxs = XmlXPathSelector(text=xml)
quota = xxs.select('//*[@name="quota"]/text()').extract()[0]
print quota
 类似资料:
  • 我正在尝试使用欧洲中央银行(ECB)的当前汇率提要http://www.ECB.int/stats/eurofxref/eurofxref-daily.xml 他们提供了关于如何解析xml的文档,但没有一个选项对我有效:我检查了是否设置了allow_url_fopen=on。 http://www.ecb.int/stats/exchange/eurofxref/html/index.en.htm

  • 问题内容: 我在包含XML的数据库中有很多行,并且试图编写Python脚本来计算特定节点属性的实例。 我的树看起来像: 如何使用Python访问XML中的属性“1”和“2”? 问题答案: 我建议ElementTree。相同的API还有其他兼容的实现,例如和在标准库本身中。但是,在这种情况下,他们主要添加的是更高的速度-编程的难易程度取决于定义的API 。 首先用 构建 的实例,例如使用函数,或者通

  • 问题内容: 我想使用python解析一个简单的小型XML文件,但是在pyXML上的工作似乎已经停止了。如果可能的话,我想使用python 2.6。谁能推荐可以与2.6兼容的XML解析器? 谢谢 问题答案: 如果它既小又简单,则只需使用标准库即可: 这将返回实现标准文档对象模型API的DOM树 如果以后需要执行诸如模式验证或XPath查询之类的复杂操作,那么我建议使用第三方lxml模块,它是流行的l

  • 问题内容: 我正在尝试将以下feed解析为python中的ElementTree:“ http://smarkets.s3.amazonaws.com/oddsfeed.xml ”(警告大文件) 到目前为止,这是我尝试过的: 但是它似乎只是挂在上面,也许是无限地??(我知道这是一个大文件,但与我解析的其他非压缩提要相比似乎太长了,而这个大文件首先会扼杀gzip压缩带来的任何带宽增长)。 接下来我尝

  • 问题内容: 我编写了一个简单的脚本,用于使用BeautifulSoup模块解析XML聊天日志。标准的soup.prettify()可以正常工作,只是聊天日志中有很多绒毛。您可以在下面看到脚本代码和我正在使用的一些XML输入文件: 码 测试XML输入 我希望能够将其输出为以下格式或至少比纯XML更可读的格式: 乔恩:嘿,怎么了?[10/31/10 @ 3:43p] 乔恩:收到了您的消息[10/31/

  • 我正在编写一个货币兑换小部件,我无法获得如何从这个xml:http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml解析数据 这是我的代码: