1

私はpythonが初めてなので、あなたの助けに感謝します。次のようなxmlコードがあります

  <ticket >
    <device name="device1"/>
    <detail>
      <name>customer1</name>
      <ip>11.12.13.4/32</ip>
      <blob gid="20" lid="10"/>
    </detail>
    <classification>C1</classification>
  </ticket>

  <ticket >
    <device name="device2"/>
    <detail>
      <name>customer2</name>
    </detail>
    <classification>C2</classification>
  </ticket>

<detail>必要なのは、すべてのインスタンスをチェックして、タグがすべての親に存在するかどうかを確認することです。存在する場合は値を出力し、存在しない場合は msg を出力し"no ip record"ます。

出力は次のようになります。

name= customer1
ip= 11.12.13.4/32

name=customer2
ip= No ip record. 

これをpythonで取得するにはどうすればよいですか?

4

1 に答える 1

0

標準ライブラリのxml.etree.ElementTreeを使用したソリューションを次に示します。

import xml.etree.ElementTree as ET


data = """
<root>
<ticket >
    <device name="device1"/>
    <detail>
      <name>customer1</name>
      <ip>11.12.13.4/32</ip>
      <blob gid="20" lid="10"/>
    </detail>
    <classification>C1</classification>
  </ticket>

  <ticket >
    <device name="device2"/>
    <detail>
      <name>customer2</name>
    </detail>
    <classification>C2</classification>
  </ticket>
</root>"""

tree = ET.fromstring(data)
for ticket in tree.findall('.//ticket'):
    name = ticket.find('.//name').text
    ip = ticket.find('.//ip')
    ip = ip.text if ip is not None else 'No ip record'
    print "name={name}, ip={ip}".format(name=name, ip=ip)

プリント:

name=customer1, ip=11.12.13.4/32
name=customer2, ip=No ip record
于 2014-04-08T02:30:21.090 に答える