BeautifulSoup XML Только печать первой строки - PullRequest
2 голосов
/ 08 марта 2012

Я использую BeautifulSoup4 (и lxml) для анализа XML-файла, по какой-то причине, когда я печатаю soup.prettify (), он печатает только первую строку:

from bs4 import BeautifulSoup

f = open('xmlDoc.xml', "r")

soup = BeautifulSoup(f, 'xml')

print soup.prettify()

#>>> <?xml version="1.0" encoding="utf-8"?>

Любая идея, почему это не такхватать все?

ОБНОВЛЕНИЕ:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!-- Data Junction generated file.
Macro type "1000" is reserved. -->
<djmacros>
  <macro name="Test" type="5000" value="TestValue">
    <description>test</description>
  </macro>
  <macro name="AnotherTest" type="0" value="TestValue2"/>
  <macro name="TestLocation" type="1000" value="C:\RandomLocation">
    <description> </description>
  </macro>
<djmacros>

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Позиция файла в EOF:

>>> soup = BeautifulSoup("", 'xml')
>>> soup.prettify()
'<?xml version="1.0" encoding="utf-8">\n'

Или содержимое недопустимо xml:

>>> soup = BeautifulSoup("no <root/> element", 'xml')
>>> soup.prettify()
'<?xml version="1.0" encoding="utf-8">\n'
1 голос
/ 23 марта 2012

Согласно ответу JFSebastion, XML недействителен.

Ваш последний тег неверен:

<djmacros>

Правильный тег:

</djmacros>

Это можно подтвердить с помощью валидатора XML.Например http://www.w3schools.com/xml/xml_validator.asp

0 голосов
/ 24 мая 2018

Если кодировка UTF-8-BOM вместо UTF-8, у нее могут быть проблемы, даже если XML является действительным в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...