Python XML解析字符串

时间:2018-03-06 21:58:39

标签: python xml elementtree

我试图在Python中解析XML字符串。例如:

   <policy-maps>
    <policy-map>
     <type>qos</type>
     <name>PROFILE1</name>
     <policy-map-rule>
      <class-name>voice</class-name>
      <class-type>qos</class-type>
      <priority-level>1</priority-level>
      <police>
       <rate>
        <value>30</value>
        <units>percent</units>
       </rate>
      </police>
      <queue-limit>
       <value>17</value>
       <unit>kbytes</unit>
      </queue-limit>
     </policy-map-rule>
     <policy-map-rule>
      <class-name>video</class-name>
      <class-type>qos</class-type>
      <police>
       <rate>
        <value>10</value>
        <units>percent</units>
       </rate>
       <burst>
        <value>5000</value>
        <units>bytes</units>
       </burst>
      </police>
     </policy-map-rule>
    </policy-map>
   </policy-maps>

我想提取标签中的所有内容&#34; policy-map&#34;或标签&#34;警察&#34;在某个&#34;政策地图内#34;和&#34;类名&#34;。我已经尝试过我能找到的每一个例子,但似乎没有任何例子正是我想要做的或工作的。有帮助吗?谢谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以为这只猫提供皮肤......但由于您的数据不使用属性,因此转换为dict可能对您来说最简单。 (您可能也喜欢untangle包。)

请注意,在下面的示例中,我使用xmltodict将xml转换为嵌套的有序字典,然后您可以对结果使用标准字典方法。

import xmltodict
import pprint

xml = """
   .... YOUR XML GOES HERE
"""

doc = xmltodict.parse(xml)

pp = pprint.PrettyPrinter(depth=6)
pp.pprint(doc['policy-maps']['policy-map']['policy-map-rule'])

产量;

[OrderedDict([('class-name', 'voice'),
              ('class-type', 'qos'),
              ('priority-level', '1'),
              ('police',
               OrderedDict([(...)])),
              ('queue-limit',
               OrderedDict([('value', '17'), ('unit', 'kbytes')]))]),
 OrderedDict([('class-name', 'video'),
              ('class-type', 'qos'),
              ('police',
               OrderedDict([(...), (...)]))])]