Найти - Пользователи
Полная версия: Поиск ноды по значению атрибута в xml-документе
Начало » Python для новичков » Поиск ноды по значению атрибута в xml-документе
1
Vader
Есть вот такой xml:
<?xml version="1.0"?>
<rootnode>
<node id="1">bla-bla-bla</node>
<node id="2">bla-bla-bla</node>
<node id="3">bla-bla-bla</node>
</rootnode>
Нужно найти, например, ноду с id == 2. Первое, что пришло в голову:
from xml.etree import ElementTree

doc = ElementTree.parse("file.xml")
for node in doc.getroot().findall("node"):
if node.attrib["id"] == "2":
print node.text
break
Но как-то перебор не очень нравится, тем более, что нод может быть достаточно много. Возможно, есть более элегантные методы?
pyuser
XPATH Вам в помощь :)
from xml.etree import ElementTree as ET

dom = ET.parse("file.xml").getroot()
node = dom.find("node[@id='2']")
if node is not None:
print(node.text)
Vader
Я бы с удовольствием воспользовался xpath'ом, но у меня питон 2.6.4 в котором ElementTree 1.2, а не 1.3, который таких xpath'ов не умеет. http://effbot.org/zone/element-xpath.htm
Использовать сторонние библиотеки не хочу, хочется обойтись стандартными. Есть еще варианты?
dimabest
Vader
Есть еще варианты?
регулярные выражения справятся с твоей задачей на ура
Vader
dimabest
регулярные выражения справятся с твоей задачей на ура
Похоже, что это единственный вариант при использовании стандартной библиотеки. Ну да ладно, регекспы, так регекспы…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB