有一棵xml树,其内容大致如下:
<uslist>
<spisok id="1" name="Важные дела" />
<act name="Важное дело" />
<act name="Ещё важное дело" />
<spisok id="2" name="Не очень важные дела" />
<act name="Неважное дело" />
<act name="Ещё неважное дело" />
</uslist>
act
我需要输出所选列表的元素。也就是说如何输出id=2的标签元素呢?
@bot.callback_query_handler(func=lambda call: call.data.startswith("list_"))
def list_selected(call):
list_id = call.data[5:]
try:
root = lxml.etree.parse('remain.xml')
except FileNotFoundError:
print("Файл remain.xml не найден.") # Логирование в консоль
return None # Возвращаем None в случае ошибки
acts = []
for result in root.xpath(f"//spisok[@id='{list_id}']"):
for act_element in result.findall('act'):
act_name = act_element.get('name')
acts.append(act_name)
if not acts:
bot.send_message(
call.from_user.id,
"У вас пока нет дел в этом списке",
reply_markup=list_menu
)
list_of_acts = types.InlineKeyboardMarkup(row_width=2)
for act_name in acts:
list_of_acts.add(
types.InlineKeyboardButton(
text=act_name,
callback_data=f"act_{act_name}"
)
)
tree.write("remain.xml", encoding="utf-8")
我用自己的头脑想出了这个解决办法,但它不起作用。