Skip to main content
 首页 » 编程设计

python之XML Python 解析

2025年05月04日8zhenyulu

我不熟悉尝试使用 python 解析 XML,我在下面提供了 xml。我需要获取以下数据 Instrmt afg="AG"和 Qty Typ="FIN"QTYL="149"我需要 AG 和 149。

我尝试了以下方法:

from xml.dom import minidom 
 
xmldoc = minidom.parse(test.xml) 
 
batch = xmldoc.getElementsByTagName('Batch')[0] 
 
rpt = batch.getElementsByTagName('PosRpt') 
 
for ag in rpt: 
    sym = ag.getElementsByTagName('Instrmt') 
    print(sym) 

当我这样做时,我得到了一个 DOM 对象,但不确定如何获得我想要的结果。

- <XML r="20030517" s="20042209" v="4.4" xr="FIA" xv="1"> 
- <Batch> 
- <PosRpt RptID="175" BizDt="2013-01-03" ReqTyp="0" > 
  <Pty ID="Ade" R="21" />  
- <Pty ID="000" R="4"> 
  <Sub ID="F" Typ="29" />  
  </Pty> 
  <Instrmt afg="AG" ID="AG" Src="8" CFI="FFI" MMY="2013" Matf="2013"/>  
  <Qty Typ="AOD" QTYL="134" QTYS="0" />  
  <Qty Typ="FIN" QTYL="149" QTYS="0" />  
  <Amt Typ="FMTM" Amt="155065.44" />  
  </PosRpt> 
  </Batch> 
  </XML> 

请您参考如下方法:

要提取属性值,请使用 elt.getAttribute("attribute_name"),例如:

print(sym.getAttribute("afg"), sym.getAttribute("ID")) 

在你的情况下 sym 仍然是一个节点列表,而不是一个节点(标签),所以你可以像这样访问列表的特定元素,例如:

sym = ag.getElementsByTagName('Instrmt') 
for e in sym: 
    print e.getAttribute("afg") 

或者只是:

print sym[0].getAttribute("afg") 

如果你知道列表中只有一个元素。

您可以使用如下表达式检查您的标签是什么:

e.tagName == 'Instrmt'