Я пытаюсь проанализировать большой XML-файл, который поступает из сети в Python.Анализ частичного XML с помощью python lxml
Для того, чтобы сделать это, я получаю данные и передать его в lxml.etree.iterparse
Однако, если XML еще полностью быть отправлено, например, так:
<MyXML>
<MyNode foo="bar">
<MyNode foo="ba
Если я бегу etree.iterparse(f, tag='MyNode').next()
I получите XMLSyntaxError
в любое время, когда оно было отрезано.
Есть ли способ сделать это, чтобы я мог получить первый тег (т. Е. Первый MyNode) и получить только исключение, когда попаду в эту часть документа? (Чтобы сделать lxml действительно «потоковым» содержимым, а не читать все в начале).
Это проблематично, хотя, как данные я получаю "не может" никогда не будет полностью принят. – KimiNewt
Это проблема. Начиная с python 3.4, lxml имеет [Инкрементный анализ событий] (http://lxml.de/parsing.html#incremental-event-parsing). Возможно, вы сможете отслеживать элементы элементов и фид закрытия элементов анализатора, когда ваш поток данных умирает. Это не сработало бы, если бы вы были средним элементом, хотя ('
tdelaney
Мне нужно поддерживать python 2.7, и мне нужно поддерживать середину, элемент тоже. – KimiNewt