从di中的xml获取值

2024-06-12 10:14:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个要解析的XML文件。在文件中我有3个独特的标签- 三 2 1个

对于metricX,每一个都有一个唯一的值。我想在python中以dict的形式提取这些值。 像这样的

   Desired Output          
   { 3 : {"metricX":100}, 2 : {"metricX":11}, 1 : {"metricX":44}}


    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
    <!DOCTYPE mdc SYSTEM "MeasDataCollection.dtd">
    <mdc xmlns:HTML="http://www.w3.org/TR/REC-xml">
    <md>
    <neid>
    <neun>936001_STURGEON_BAY_MEYER</neun>
    </neid>
    <mi>
    <mi>
    <mts>20170924161500Z</mts>
    <gp>900</gp>
    <mt>metricX</mt>
    <mv>
    <moid>3</moid>
    <r>100</r>
    </mv>
    <mv>
    <moid>2</moid>
    <r>11</r>
    </mv>
    <mv>
    <moid>1</moid>
    <r>44</r>
    </mv>
    </mi>
    </mi>
    </md>
    </mdc>

到目前为止,我已经尝试使用元素树。你知道吗

 import os
 import xml.etree.ElementTree as ET
  fullpath = os.getcwd()
  os.chdir(r"C:\Users\sss\Documents\Zabbix_work\xml_parsing")
  tree = ET.ElementTree(file='smaple.xml')
  for elem in tree.iter():
      print (elem.tag, elem.text)

目前的产量是-

    mdc 

    md 

    neid 

    neun 936001_STURGEON_BAY_MEYER
    mi 

    mi 

    mts 20170924161500Z
    gp 900
    mt metricX
    mv 

    moid 3
    r 100
    mv 

    moid 2
    r 11
    mv 

    moid 1
    r 44

现在还不太清楚如何以口述的形式进一步组织它


Tags: 文件osxmlmtsmdgpmimt
1条回答
网友
1楼 · 发布于 2024-06-12 10:14:00

这应该可以做到:

import xml.etree.ElementTree as ET
import os

file_path = os.path.expanduser('~/Desktop/input123.xml') # filepath here

tree = ET.ElementTree(file=file_path)

my_dict = {}

for node in tree.getroot().find('md').find('mi').find('mi').findall('mv'):
    my_dict[int(node.find('moid').text)] = { 'metricX': int(node.find('r').text) }

print(my_dict)

…输出:

{3: {'metricX': 100}, 2: {'metricX': 11}, 1: {'metricX': 44}}

相关问题 更多 >