簡體   English   中英

無法使用Python解析XML文件

[英]Cannot Parse XML file using Python

<?xml version="1.0" encoding="utf-8"?>
<AcResponse
    Command="hist"
    TaskId="408709">
  <element
      name="/build.gradle"
      id="93527">
    <transaction
        id="1117194"
        type="promote"
        time="1529083792"
        user="soarfa99">
      <comment>Automated promotion to parent stream by module build: jenkins-SC-MODULE-CS-SC-TRUNK-MedRec-DEV-CI-430</comment>
      <version
          virtual="11007/75"
          real="36877/2"
          virtualNamedVersion="CS-SC-TRUNK-INTG/75"
          realNamedVersion="CS-SC-TRUNK-MedRec-DEV2_ar037601/2"
          elem_type="text"
          dir="no">
        <issueNum>72768</issueNum>
      </version>
    </transaction>
    <transaction
        id="1111652"
        type="promote"
        time="1528100495"
        user="dm041068">
      <comment>SEDA file add- Debajyoti</comment>
      <version
          virtual="11007/74"
          real="39225/1"
          virtualNamedVersion="CS-SC-TRUNK-INTG/74"
          realNamedVersion="CS-SC-TRUNK-CM-DEV-Debajyoti_dm041068/1"
          elem_type="text"
          dir="no">
        <issueNum>72629</issueNum>
      </version>
    </transaction>
  </element>
  <streams>
    <stream
        id="11007"
        name="CS-SC-TRUNK-INTG"
        type="normal"/>
  </streams>
</AcResponse>

這是我嘗試解析的xml,並且我嘗試使用以下代碼提取屬性“ issueNum”:

tree=ET.parse(xml)
root=tree.getroot()
for item in root.findall('version'):
    for child in item:
        print(child.attrib['issueNum'])

你們能幫忙嗎,給我“ issueNum”的價值。

您可以使用xpath表達式來查找issueNum的值:

from lxml import etree

xml = '''<?xml version="1.0" encoding="utf-8"?>
<AcResponse
    Command="hist"
    TaskId="408709">....'''

tree = etree.fromstring(xml)
issues = tree.xpath('//version/issueNum')

for issue in issues:
    print(issue.text)

打印:

72768
72629

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM