簡體   English   中英

如何解析嵌套的 XML?

[英]How to parse a nested XML?

我有一個 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>

使用 xml.etree.ElementTree 我不走運。 有人可以提供方向嗎?

所以你可以做類似下面的事情來找到你的標簽和文本

   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