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¨.

Надеюсь, ты сможешь помочь.

Вы пробовали напечатать dir любого объекта Element? т.е. dir(x)

Abdul Niyas P M 06.12.2018 05:42

Абдул, спасибо за помощь, эта идея фактически дала окончательное решение: >>> for x in test: ... print (x.text) ... be: 01: 01: 01: 01: 01 be: 01: 01: 01: 01: 02 быть: 01: 01: 01: 01: 03 быть: 01: 01: 01: 01: 04 быть: 01: 01: 01: 01: 05 ce: 01: 01: 01: 01: 01

Gabriel Flores 06.12.2018 05:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
55
1

Ответы 1

Для синтаксического анализа XML удобно использовать XPath. Вы можете попробовать что-то вроде этого:

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" для вашего примера данных

Другие вопросы по теме