XML-печать значений элементов с помощью Python
Я тестирую pyez с вызовами rpc, чтобы получить mac-таблицу, пока я могу получить данные, но когда я печатаю эти данные, мне не показываются значения, которые они показывают, только адреса памяти.
ниже моего кода:
dev = Device( user='labroot', host='X.X.X.X', password='*****')
dev.open()
Device(X.X.X.X)
macs = dev.rpc.get_vpls_mac_table()
dev.close()
test = macs.findall('l2ald-mac-entry/l2-mac-entry/l2-mac-address')
print(test)
Этот принт показывает мне следующее:
for x in test:
... print(x)
...
<Element l2-mac-address at 0x7fc606f66d88>
<Element l2-mac-address at 0x7fc606f66f38>
<Element l2-mac-address at 0x7fc606f66cb0>
<Element l2-mac-address at 0x7fc606f66f80>
<Element l2-mac-address at 0x7fc606f66b00>
<Element l2-mac-address at 0x7fc606f6f050>
<Element l2-mac-address at 0x7fc606f6f0e0>
содержание "macs" выглядит так:
<l2ald-rtb-macdb>
<l2ald-mac-entry style="brief-rtb">
<l2-mac-routing-instance>VPLS</l2-mac-routing-instance>
<l2-mac-bridging-domain>__VPLS__</l2-mac-bridging-domain>
<l2-bridge-vlan>none</l2-bridge-vlan>
<l2-mac-entry>
<l2-mac-address>be:01:01:01:01:01</l2-mac-address>
<l2-mac-flags>D</l2-mac-flags>
<l2-mac-logical-interface>lsi.1049332</l2-mac-logical-interface>
то, что я хочу напечатать, это mac-адреса в иерархии l2-mac-entry, в этом примере будет значение "be: 01: 01: 01: 01: 01".
Надеюсь, вы можете помочь.
1 ответ
Удобно использовать XPath для разбора XML. Вы можете попробовать что-то вроде этого:
import xml.etree.ElementTree as ET
for x in test:
el = ET.fromstring(x)
mac = el.find(".//*l2-mac-address").text
print(mac)
возвращает "be:01:01:01:01:01" для вашего примера данных