Вы можете выполнять рекурсивную итерацию, используя .iter()
для поиска элементов. Проверьте официальную документацию .
Вот пример для печати текста label
и host
из узла slave
.
Обновление : code.py
модифицируется для дополнительной печати значения атрибута class
тега launcher
. Он использует element.attrib
для получения атрибутов тега. Больше можно найти в официальной документации парсинга XML .
test.xml
:
some_name
some_value
xx
xxx
xxx.x.x.xx
xx
xxxxxxxx
x
x
code.py
:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
root = tree.getroot()
for item in root.iter('slave'):
for label in item.iter("label"):
print label.text
for host in item.iter("host"):
print host.text
for launcher in item.iter("launcher"):
print launcher.attrib["class"]
Выход:
somelabel
xxx.x.x.xx
xxxxx
Если Вы используете jQuery затем, почему бы не полностью использовать его абстракции?
Например.
Вместо:
$("input#title").get(0).setAttribute("max_length", 25);
$("input#title").get(0).setAttribute(
"onkeypress",
"return limitMe(event, this)");
function limitMe(evt, txt) {
if (evt.which && evt.which == 8) return true;
else return (txt.value.length < txt.getAttribute("max_length");
}
Сделайте это:
$('input#title').attr('maxLength','25').keypress(limitMe);
function limitMe(e) {
if (e.keyCode == 8) { return true; }
return this.value.length < $(this).attr("maxLength");
}
Править: Причина это не работает в IE, вероятно, из-за того, как Вы присоединили 'onKeyPress' обработчик через setAttribute. - Это не надлежащий способ зарегистрировать обработчики событий.
Атрибут, который Вы ищете, maxlength
, нет max_length
. Посмотрите здесь.
Не забывайте хотя, что, если Вы устанавливаете maxlength через JavaScript, кто-то еще мог бы так же, как легко изменить maxlength на то, что они любят. Необходимо будет все еще проверить отправленные данные по серверу.