Python 3でXMLを解析する方法読みやすい子情報を取得できません

2020-06-11 python xml

Python 3を使用してxmlドキュメントを解析しています。 「ホスト」タグの間に保持されているデータを印刷すると、 <Element 'Host' at 0x7f2a037fca48> `が表示されます。 Elementが保持する文字列データを取得するにはどうすればよいですか?

Googleでドキュメントを表示すると、「Host」要素のプロパティにドリルダウンして以下を確認できます。

 tagName:「ホスト」 
 textContent:「10.10.1.115」 

「textContent:」にアクセスするにはどうすればよいですか?

私のコード:

import xml.etree.ElementTree as ET
mytree = ET.parse('IPHost-1.xml')
myroot = mytree.getroot()
for x in myroot.findall('IPHostList'):
    Name = x.find('Name').text
    Host = x.find('Host').text
    #HostType = x.find('HostType').text
    #IPAddress = x.find('IPAddress.')
    #print(Name,IPFamily,HostType,IPAddress)

結果5.5.5.5 IPv4 IP <要素 'Host' at 0x7f2a037fca48>

私のXMLコード:

<Name>X-RDP-SERVERS</Name>
<Description/>
<HostList>
  <Host>INSE-AA01VRDP014</Host>
  <Host>INSE-AA01VRDP033</Host>
  <Host>INSE-AA01VRDP046</Host>
</HostList>
<IPFamily>IPv4</IPFamily>   </IPHostGroup>   <IPHostGroup>
<Name>I-SYSLOG</Name>
<Description/>
<HostList>
  <Host>A-SPIPLOG01</Host>
  <Host>A-SPIPSEC04</Host>
  <Host>A-NITRO</Host>
</HostList>
<IPFamily>IPv4</IPFamily>   </IPHostGroup>   <IPHostGroup>
<Name>X-DMZ-LOCAL</Name>
<Description/>
<HostList>
  <Host>INSIDE-SPIVDD011</Host>
  <Host>INSIDE-SPIVDD021</Host>
</HostList>
<IPFamily>IPv4</IPFamily>   </IPHostGroup>   <IPHostGroup>
<Name>I-WIFI</Name>
<Description/>
<HostList>
  <Host>10.23.0.0</Host>
</HostList>
<IPFamily>IPv4</IPFamily>   </IPHostGroup>   <IPHostGroup>
<Name>X-SERVERS</Name>
<Description/>
<HostList>
  <Host>10.33.0.0</Host>
  <Host>10.43.0.0</Host>
  <Host>10.1.24.0</Host>
  <Host>10.55.2.0</Host>
</HostList>
<IPFamily>IPv4</IPFamily>   </IPHostGroup> </IPGroupList>

Answers

あなたの質問は明確ではありませんが、おそらく次のようなものを探しています:

for x in myroot.xpath('//Name'):
    print("Name: ",x.text)
    for host in x.xpath('./following-sibling::HostList//Host'):
        print("Host: ",host.text)
    for family in x.xpath('./following-sibling::IPFamily'):
        print("IP Family: ",family.text)

出力(サンプルxmlに基づき、適切に検証済み):

Name:  X-RDP-SERVERS
Host:  INSE-AA01VRDP014
Host:  INSE-AA01VRDP033
Host:  INSE-AA01VRDP046
IP Family:  IPv4

Related