1

1つの大きなドキュメント(400 mb)があり、それぞれに独自の宣言がある数百のXMLドキュメントが含まれています。PythonのElementTreeを使用して各ドキュメントを解析しようとしています。情報を解析するために各XMLドキュメントを分割するのに多くの問題があります。ドキュメントがどのように見えるかの例を次に示します。

<?xml version="1.0"?>
<data>
    <more>
       <p></p>
    </more>
</data>
<?xml version="1.0"?>
<different data>
    <etc>
       <p></p>
    </etc>
</different data>
<?xml version="1.0"?>
<continues.....>

理想的には、各XML宣言を読み、データを解析して、次のXMLドキュメントに進みたいと思います。任意の提案が役立ちます。

4

1 に答える 1

2

ドキュメントを個別に読む必要があります。これは、指定されたファイルオブジェクトから完全なXMLドキュメントを生成するジェネレーター関数です。

def xml_documents(fileobj):
    document = []
    for line in fileobj:
        if line.strip().startswith('<?xml') and document:
                yield ''.join(document)
                document = []
        document.append(line)

    if document:
        yield ''.join(document)

次に、を使用ElementTree.fromstring()してこれらをロードおよび解析します。

with open('file_with_multiple_xmldocuments') as fileobj:
    for xml in xml_documents(fileobj):
        tree = ElementTree.fromstring(xml)
于 2013-03-26T18:52:26.577 に答える