2017-09-27 21 views
-1

特定の値(pmSctpAborted、pmSctpInErrors)を抽出するXMLファイルがあります。Pythonを使って入れ子になった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> 

私はPythonでのXML構文解析にかなり新しいですし、xml.etree.ElementTreeで遊んでてきたが、私は多くの幸運を持っていないです。誰かが方向を教えてくれますか?いくつかの読書の後にそう

と私はXMLを解析することができる午前実験 - 輸入xml.etree.ElementTree ET

として
tree = ET.parse('sb_meyer.xml') #------ Name of file 
root = tree.getroot() 
test = tree.findall('.//md') 
print (len(test)) 
d = test[1].findall('.//') 

print (d) 
type(d) 

    2 
[<Element 'neid' at 0x0000000005844958>, <Element 'neun' at 
    0x000000000587CEA8>, <Element 'nedn' at 0x00000000058757C8>, <Element 
    'nesw' at 0x00000000058758B8>, <Element 'mi' at 0x0000000005875778>,.....] 

質問今、私は要素NEID、のNeuNなどの値にアクセスする方法にある

+4

可能な重複[どのように私はXを解析んを見つけるために、下記のような何かを行うことができますML in Python?](https://stackoverflow.com/questions/1912434/how-do-i-parse-xml-in-python) –

+1

の指示は、ドキュメントと '' xml.etree.ElementTree'の例を調べることです' –

+0

okはいくつかのものを試しました。あなたが推奨するものを使用して - xml.etree.ElementTree – ssharma

答えて

0

はつまり、あなたのタグとテキスト

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) 
関連する問題