Чтение двоичных данных XML с BeautifulSoup - PullRequest
0 голосов
/ 15 апреля 2019

Добрый день,

Я использую BeautifulSoup для анализа XML-файла, который имеет тег, подобный приведенному ниже примеру, который содержит некоторые двоичные данные:

<data length=1234 encoding="x-modified">
:M\ANEG9&3I6%1I8CN!68<ID(E]*%N]Y/J;:6EYM6&N:9<E9).YA*I:94*]9O.[Y
R;59Z0LEWY;74*:E!5YWM8KE[AE;48:5N"I74*:H(E#L79X57ZG1'E:85=YVE68,
:3=5=:B&FVN-Y(EU;UJ:*28FSQ#F6,ID'V:EE-JVN=APE:9X&8EYFL<67TI$DBR0
........
</data>

Тег, атрибуты и двоичный файлвсе данные считываются неправильно, как показано ниже:

<data>1234 encoding="x-modified"&gt;
:M\ANEG93I6%1I8CN!68<ID>(E]*%N]Y/J;:6EYM6<E9>).YA*I:94*]9O.[Y
R;59Z0LEWY;74*:E!5YWM8KE[AE;48:5N"I74*:H(E#L79X57ZG1'E:85=YVE68,
:3=5=:B(EU;UJ:*28FSQ#F6,ID'V:EE-JVN=APE:9X8EYFL</E9></ID></data>

Обратите внимание, как данные усекаются, когда в данных встречается '<'.Также обратите внимание, что атрибут «длина» удаляется при чтении тега. </p>

Любые идеи о том, как я могу обойти это, приветствуются.

Спасибо.

1 Ответ

0 голосов
/ 15 апреля 2019

Вы описываете это как файл XML, но это не так.

Данные представляют собой полный беспорядок (в XML «<» не допускается в текстовых узлах без экранирования), а в то время как BeautifulSoupделает все возможное, чтобы создать порядок из хаоса, это не волшебство, и оно явно не работает в этом примере. </p>

Моя рекомендация будет заключаться в том, чтобы использовать стандарты, такие как XML или JSON для передачи данных, вместо плохо определенныхприближения без формального определения.Вы не можете надежно анализировать файлы данных, если у вас нет спецификации формата.

...