为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>
答
首先,您制作的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'))
希望帮助,
查找BS4或LXML – 2014-12-02 12:02:59