为Python解析XML使用XPATH

为Python解析XML使用XPATH

问题描述:

我是Python新手 - 几天前 - 我希望得到一些帮助。为Python解析XML使用XPATH

我想编写一个Python代码来解析如下下面的XML: -

ServingCell ---------- NeighbourCell
L41_NBR3347_1 ---------- L41_NBR3347_2
L41_NBR3347_1 ---------- L41_NBR3347_3
L41_NBR3347_1 ---------- L41_NBR3349_1
L41_NBR3347_1 ---------- L41_NBREA2242_1

<LteCell id="L41_NBR3347_1"> 
<attributes> 
    <absPatternInfoTdd><unset/></absPatternInfoTdd> 
    <additionalSpectrumEmission>1</additionalSpectrumEmission> 
    <additionalSpectrumEmissionList><unset/></additionalSpectrumEmissionList> 
    <LteSpeedDependentConf id="0">     
    <attributes>          
    <tReselectionEutraSfHigh>lDot0</tReselectionEut 
    <tReselectionEutraSfMedium>lDot0</tReselectionE 
    </attributes>         
    </LteSpeedDependentConf>       
    <LteNeighboringCellRelation id="L41_NBR3347_2"> 
    <attributes>          
    <absPatternInfo><unset/></absPatternInfo>  
    </LteNeighboringCellRelation>      
    <LteNeighboringCellRelation id="L41_NBR3347_3"> 
    <attributes>          
    <absPatternInfo><unset/></absPatternInfo>  
    </LteNeighboringCellRelation>      
    <LteNeighboringCellRelation id="L41_NBR3349_1"> 
    <attributes>          
    <absPatternInfo><unset/></absPatternInfo>        
    </LteNeighboringCellRelation>      
    <LteNeighboringCellRelation id="L41_NBREA2242_1"> 
    <attributes>          
    <absPatternInfo><unset/></absPatternInfo>  
    <absPatternInfoTdd><unset/></absPatternInfoTdd> 
+0

查找BS4或LXML – 2014-12-02 12:02:59

首先,您制作的xml路径不正确:您需要关闭打开的标签。 例如属性已打开且未关闭。

<LteNeighboringCellRelation id="L41_NBR3349_1"> 
     <attributes>          
     <absPatternInfo> 
      <unset/> 
     </absPatternInfo>        
    </LteNeighboringCellRelation> 

我重构(并简化了一点点)的XML来纠正它。

<LteCell id="L41_NBR3347_1"> 
    <attributes>      
     <LteNeighboringCellRelation id="L41_NBR3347_2">           
     </LteNeighboringCellRelation>      
     <LteNeighboringCellRelation id="L41_NBR3347_3">   
     </LteNeighboringCellRelation>      
     <LteNeighboringCellRelation id="L41_NBR3349_1">                
     </LteNeighboringCellRelation>      
     <LteNeighboringCellRelation id="L41_NBREA2242_1"> 
     </LteNeighboringCellRelation> 
    </attributes> 
</LteCell> 

这是解析和显示它的代码。

import xml.etree.ElementTree as ET 
tree = ET.parse("XmlExample.xml") 
result = '' 
root = tree.getroot() 

for e in tree.findall('./attributes/LteNeighboringCellRelation'):#attributes/LteNeighboringCellRelation 
    print(root.attrib['id']+'----------'+e.attrib.get('id')) 

希望帮助,