Найти индекс дочернего элемента в lxmlPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Найти индекс дочернего элемента в lxml

Сообщение Anonymous »

Я использую Python 3.12 и lxml.
Я хочу найти определенный тег, и я могу сделать это с помощью elem.find("tag"). elem имеет тип Element.
Но я хочу переместить дочерние элементы этого дочернего элемента в родительский элемент, где находился дочерний элемент. Для этого мне нужен индекс ребенка. И я не могу найти способ найти этот индекс.
Описание API lxml содержит метод _Element.index(), но я понятия не имею, как получить экземпляр _Element из элемента. экземпляр.
Пожалуйста, подскажите, как определить этот индекс. (Это можно сделать с помощью цикла вместо find(), но мне нужен более аккуратный способ).
РЕДАКТИРОВАТЬ: вот пример XML-элемента Я пишу код, который находит , который является дочерним, но я не знаю его положение заранее (их тоже может быть несколько), и перемещает его дочерние элементы в родительский где это было, затем удаляет , чтобы получить это: Итак, я могу найти с помощью Parent.find(). Но чтобы переместить его дочерние элементы в одно и то же место под , мне нужен индекс , поскольку метод Insert() требует индекса. Сейчас я использую этот ключ:

Код: Выделить всё

    while True:
index = None
found = None
for i in range(len(parent)):
if parent[i].tag =="container":
found = parent[i]
index = i
break
if found is None:
break

offset = 0
while len(found) > 0:
parent.insert(index+offset,found[0])
offset+=1
parent.remove(found)
Я знаю, что смещение избыточно, поскольку можно просто увеличить индекс, я сделал это из эстетических соображений. Но сам цикл — это довольно сложная задача. Вот что бы я сделал, если бы у Element был метод index(), но его нет:

Код: Выделить всё

    found = parent.find("container")
while found:
index = parent.index(found)
offset = 0
while len(found) > 0:
parent.insert(index+offset,found[0])
offset+=1
parent.remove(found)
found = parent.find("container")
Но Element.index() не существует; _Element.index() существует, но я не знаю, как получить доступ к _Element.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ld-in-lxml
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»