python中的XML vs字典,用于搜索和提取

德兰杰

我有一个大小合适的XML文件,该文件是使用Python中的以下代码从monit的API中提取的。

file = urllib.request.urlopen(URL) #opening the XML URL
    data = file.read()
    file.close()
    list.append(parsedXML, xmltodict.parse(data)) #Parsing to dict the XML file created

我使用XMLtoDICT将XML转换为字典,因为我认为这样会更容易搜索和提取。XMLtoDICT创建了一个嵌套的,有序的字典,这很棒。但是,我没有找到一种简单的方法来搜索python字典的每个“层”并提取出整个节点。

有没有一种简单的方法来搜索和拉出python中的字典节点以进行编辑?

例如,查看下面的XML。将其放入字典后,我需要提取以“ <service开头的每个节点(完整的XML文件中将有多个),然后在该确切节点上运行测试,并可能更改值。
我还将需要搜索字典中的所有值,找到一个值,然后获取该值的父节点名称并提取整个节点。那可能吗?

还是我应该完全跳过字典并直接使用XML?如果是这样,是否有一个支持所有这些功能的XML python库?

这是我提取的XML数据的示例:

    <monit>
    <server>
        <id>9d8b2a3d3618ccc38628f6d7b89ebfd8</id>
        <incarnation>1427714713</incarnation>
        <version>5.4</version>
        <uptime>44395</uptime>
        <poll>120</poll>
        <startdelay>0</startdelay>
        <localhostname>DMZ-Server</localhostname>
        <controlfile>/etc/monit/monitrc</controlfile>
        <httpd>
            <address>192.168.1.100</address>
            <port>2812</port>
            <ssl>0</ssl>
        </httpd>
    </server>
    <platform>
        <name>Linux</name>
        <release>2.6.32-34-pve</release>
        <version>#1 SMP Sat Nov 8 09:38:26 CET 2014</version>
        <machine>i686</machine>
        <cpu>8</cpu>
        <memory>3145728</memory>
        <swap>1048576</swap>
    </platform>
    <service type="3">
        <name>mmonit</name>
        <collected_sec>1427759050</collected_sec>
        <collected_usec>180381</collected_usec>
        <status>0</status>
        <status_hint>0</status_hint>
        <monitor>1</monitor>
        <monitormode>0</monitormode>
        <pendingaction>0</pendingaction>
        <pid>11481</pid>
        <ppid>1</ppid>
        <uptime>692522</uptime>
        <children>0</children>
贾斯汀·丹尼尔森

任何树遍历算法都可以解决问题。

http://rosettacode.org/wiki/Tree_traversal#Python

我会坚持使用XML,并使用lxml解析和遍历XML树。

http://lxml.de/tutorial.html
http://lxml.de/tutorial.html#the-elementtree-class

我确信这里的其他人会建议较新的XML库,可以随时使用它们。LXML是我所熟悉的唯一一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

XML Python中的条件搜索

来自分类Dev

Python和lxml中的XML

来自分类Dev

通过属性搜索和提取XML节点

来自分类Dev

用于存储字典python vs java的内存

来自分类Dev

用于存储字典python vs java的内存

来自分类Dev

Python:从嵌套的字典和列表中递归提取注释树

来自分类Dev

使用Python和ElementTree在XML中搜索变量属性

来自分类Dev

在Python中从XML创建字典列表

来自分类Dev

XML转换为Python中的DataFrame字典

来自分类Dev

在列表和字典列表中搜索值

来自分类Dev

在python中从xml格式提取数据

来自分类Dev

无法从python中的xml中提取文本

来自分类Dev

从SQL中的行搜索和提取单词

来自分类Dev

python xml和csv提取

来自分类Dev

在Python中解析嵌套和复杂的XML

来自分类Dev

Python 2.5:XML中的ElementTree和UML

来自分类Dev

Python Regexp用于提取标签和单词

来自分类Dev

在python中搜索字典列表

来自分类Dev

在Python中的字典中搜索列表-Pymongo

来自分类Dev

Python:在列表中嵌入的字典中搜索

来自分类Dev

使用lxml将XML转换为Python中的字典

来自分类Dev

根据xml文件中的标记文本创建字典(python)

来自分类Dev

将xml DOM结构从文件转换为python中的字典

来自分类Dev

Python 将 XML 兄弟姐妹放入字典中

来自分类Dev

Python 中难于将 XML 转换为字典

来自分类Dev

如何使用python搜索和打印字典?

来自分类Dev

在字典中搜索键,并同时返回键和值

来自分类Dev

在列表和字典中搜索的复杂性

来自分类Dev

从条件中搜索和提取多个Excel文件中的数据