Я использую BeautifulSoup с python 3.4 для анализа XML-файла. Мой код выглядит следующим образом:
from lxml import etree from bs4 import BeautifulSoup import psycopg2 import sys import configparser import re with open(informationFileName) as infoFP: infoTableSoup = BeautifulSoup(infoFP, "xml") infoTableSoupFileName.write(infoTableSoup.prettify())
informationFileName содержит следующую строку текста:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><informationTable xmlns:ns1="http://www.sec.gov/edgar/common" xmlns:ns11="http://www.sec.gov/edgar/statecodes" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable" xsi:schemaLocation="http://www.sec.gov/edgar/common eis_Common.xsd http://www.sec.gov/edgar/statecodes eis_stateCodes.xsd http://www.sec.gov/edgar/document/thirteenf/informationtable eis_13FDocument.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><infoTable><nameOfIssuer>1ST SOURCE CORP</nameOfIssuer><titleOfClass>COM</titleOfClass><cusip>336901103</cusip><value>166</value><shrsOrPrnAmt><sshPrnamt>3364</sshPrnamt><sshPrnamtType>SH</sshPrnamtType></shrsOrPrnAmt><investmentDiscretion>SOLE</investmentDiscretion><otherManager>1</otherManager><votingAuthority><Sole>3364</Sole><Shared>0</Shared><None>0</None></votingAuthority></infoTable></informationTable> </XML> </TEXT> </DOCUMENT> </SEC-DOCUMENT>
Текст, к сожалению, все в одной строке. Когда я запускаю эту программу, предварительно проверенный xml усекается следующим образом:
<?xml version="1.0" encoding="utf-8"?> <informationTable xmlns:ns1="htt"/>
Тем не менее, если я отформатирую xml перед запуском ниже, то он будет правильно настроен.
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><informationTable xmlns:ns1="http://www.sec.gov/edgar/common" xmlns:ns11="http://www.sec.gov/edgar/statecodes" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable" xsi:schemaLocation="http://www.sec.gov/edgar/common eis_Common.xsd http://www.sec.gov/edgar/statecodes eis_stateCodes.xsd http://www.sec.gov/edgar/document/thirteenf/informationtable eis_13FDocument.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <infoTable> <nameOfIssuer>1ST SOURCE CORP</nameOfIssuer> <titleOfClass>COM</titleOfClass> <cusip>336901103</cusip> <value>166</value> <shrsOrPrnAmt> <sshPrnamt>3364</sshPrnamt> <sshPrnamtType>SH</sshPrnamtType> </shrsOrPrnAmt> <investmentDiscretion>SOLE</investmentDiscretion> <otherManager>1</otherManager> <votingAuthority> <Sole>3364</Sole> <Shared>0</Shared> <None>0</None> </votingAuthority> </infoTable> </informationTable> </XML> </TEXT> </DOCUMENT> </SEC-DOCUMENT>
Почему это так? Я не делаю ничего, кроме добавления новых строк. Я думал, что BeautifulSoup не должен заботиться о форматировании файла.