0

このエラーに対処する方法が正確にわかりません...

コード:

import xml.etree.ElementTree as ET
tree = ET.parse('network_objects.xml')
root = tree.getroot()

for network in root.iterfind('network_object'):
    name = network.find('Name')
    class_name = network.find('Class_Name')
    color = network.find('color')
    for netmaskElement in network.iterfind('netmask'):
        netmask = network.itertext('netmask')    
    for ipaddyElement in network.iterfind('ipaddr'):
        ipaddy = network.find('ipaddr')
    print (name.text,class_name.text,ipaddy.text,netmask,color.text)

エラー:

builtins.TypeError: itertext() takes exactly 1 positional argument (2 given)
line 10, in <module>
netmask = network.itertext('netmask')

例として、XML 自体:

<network_objects>
<network_object>
<Name>Internal-192.168.112.0_24b</Name>
<Class_Name>network</Class_Name>
<add_adtr_rule>false</add_adtr_rule>
<broadcast><![CDATA[allow]]></broadcast>
<color><![CDATA[dark orchid]]></color>
<comments><![CDATA[no comment]]></comments>
<edges/>
<ipaddr><![CDATA[192.168.112.0]]></ipaddr>
<location><![CDATA[internal]]></location>
<location_desc><![CDATA[]]></location_desc>
<netmask><![CDATA[255.255.255.0]]></netmask>
<type><![CDATA[network]]></type>
</network_object>
</network_objects>

もちろん、ネットマスクを含まないオブジェクトは他にもありますが、これがエラーの原因であると想定していますが、for ループがそれを修正すると想定しました。

これを修正するにはどうすればよいですか? :)

4

2 に答える 2

2

itertext( 'netmask')をに変更itertext()

ドキュメントは、現在行っているように、追加のパラメーターを受け取らないことを示しています。

インターテキストのドキュメント

于 2013-03-25T18:36:10.440 に答える
0

ループの残りの部分と同じように .find を使用しないのはなぜですか?

import xml.etree.ElementTree as ET
tree = ET.parse('network_objects.xml')
root = tree.getroot()

for network in root.iterfind('network_object'):
    name = network.find('Name')
    class_name = network.find('Class_Name')
    color = network.find('color')
    for netmaskElement in network.iterfind('netmask'):
        netmask = network.find('netmask')    
    for ipaddyElement in network.iterfind('ipaddr'):
        ipaddy = network.find('ipaddr')
    print (name.text,class_name.text,ipaddy.text,netmask,color.text)
于 2013-03-25T22:50:17.880 に答える