maxpoitn2point
@maxpoitn2point
Как всегда, в своем репертуаре

Как убрать декларацию xml для парсинга с помощью lxml objectify?

Есть xml ответ от сервера вида:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<A>
  <url replyId="fb71e2db-2912-44c3-aab6-e92ced783e11">http://localhost:8080/opt/out/Ticket/3</url>
  <url replyId="4ca8fbae-b05f-42bf-bf22-16fa7d2a2b0b">http://localhost:8080/opt/out/Ticket/5</url>
  <url replyId="e3cdc104-98a9-4b45-941a-559649c6969a">http://localhost:8080/opt/out/Ticket/6</url>
  <ver>1</ver>
</A>

при попытке парсинга этого ответа с помощью метода lxml.fromstring возникает ошибка
ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.

очевидно, что дело в самой первой строке:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

но я не могу от нее избавиться. заранее спасибо

UPD
код на питоне
import requests
from lxml import objectify as ob

r = requests.get('http://localhost:8080/opt/out')
obj = ob.fromstring(r.text)


UPD
Есть идея парсить ответ регулярным выражением, удаляя объявление формата. Тем самым подготавливая данные для парсинга. Но, наверняка есть решение, более лаконичное и простое.
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы