简体   繁体   English

如何解析嵌套的 XML?

[英]How to parse a nested XML?

I have an XML file from which I want to extract certain values:我有一个 XML 文件,我想从中提取某些值:

<?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">
<mfh>
<ffv>32.401 V6.2</ffv>
<sn>SubNetwork=ONRM_ROOT_MO_R,SubNetwork=MKT_9360,MeContext=936001_STURGEON_BAY_MEYER</sn>
<st></st>
<vn></vn>
<cbt>20170924154500Z</cbt>
</mfh>
<md>
<neid>
<neun>936001_STURGEON_BAY_MEYER</neun>
<nedn>SubNetwork=ONRM_ROOT_MO_R,SubNetwork=MKT_9360,MeContext=936001_STURGEON_BAY_MEYER</nedn>
<nesw>CXP102051/26_R28BY</nesw>
</neid>
<mi>
<mts>20170924160000Z</mts>
<gp>900</gp>
<mt>pmSwitchIngressDiscards</mt>
<mt>pmSwitchIngressLoad</mt>
<mv>
<moid>ManagedElement=1,Equipment=1,Subrack=1,Slot=1,PlugInUnit=1</moid>
<r></r>
<r></r>
</mv>
</mi>
</md>
<md>
<neid>
<neun>936001_STURGEON_BAY_MEYER</neun>
<nedn>SubNetwork=ONRM_ROOT_MO_R,SubNetwork=MKT_9360,MeContext=936001_STURGEON_BAY_MEYER</nedn>
<nesw>CXP102051/26_R28BY</nesw>
</neid>
<mi>
<mts>20170924160000Z</mts>
<gp>900</gp>
<mt>pmSctpAborted</mt>
<mt>pmSctpActiveEstab</mt>
<mt>pmSctpCurrEstab</mt>
<mt>pmSctpInErrors</mt>
<mt>pmSctpInNoPorts</mt>
<mt>pmSctpPassiveEstab</mt>
<mt>pmSctpShutdowns</mt>
<mt>pmSctpStatAssocOutOfBlue</mt>
<mt>pmSctpStatChecksumErrorCounter</mt>
<mt>pmSctpStatCommResume</mt>
<mt>pmSctpStatCommStop</mt>
<mt>pmSctpStatFragmentedUserMsg</mt>
<mt>pmSctpStatOutOfOrderRecChunks</mt>
<mt>pmSctpStatOutOfOrderSendChunks</mt>
<mt>pmSctpStatReassembledUserMsg</mt>
<mt>pmSctpStatRecChunks</mt>
<mt>pmSctpStatRecChunksDropped</mt>
<mt>pmSctpStatReceivedControlChunks</mt>
<mt>pmSctpStatReceivedPackages</mt>
<mt>pmSctpStatRetransChunks</mt>
<mt>pmSctpStatSentChunks</mt>
<mt>pmSctpStatSentChunksDropped</mt>
<mt>pmSctpStatSentControlChunks</mt>
<mt>pmSctpStatSentPackages</mt>
<mv>
<moid>ManagedElement=1,TransportNetwork=1,Sctp=1</moid>
<r>6</r>
<r>17</r>
<r>10</r>
<r>19</r>
<r>0</r>
<r>12</r>
<r>13</r>
<r>19</r>
<r>0</r>
<r>0</r>
<r>0</r>
<r>11815</r>
<r>0</r>
<r>0</r>
<r>18904</r>
<r>5303976</r>
<r>21</r>
<r>6346369</r>
<r>9360827</r>
<r>2</r>
<r>6567878</r>
<r>0</r>
<r>4843224</r>
<r>10066507</r>
</mv>
</mi>
</md>
</mdc>

With xml.etree.ElementTree I am not having luck.使用 xml.etree.ElementTree 我不走运。 Can someone please provide direction?有人可以提供方向吗?

So you can do something like below to find your tags and text所以你可以做类似下面的事情来找到你的标签和文本

   from lxml import etree
   tree = etree.parse('C:\\Users\\sb_meyer.xml')
   #print(tree)
   root = tree.getroot()
   #print(root)
   for neid_values in tree.findall('.//neid//'):
       print(neid_values.tag,neid_values.text)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM