2

我有一个数据量很大的 XML 文件。

XML 文件包含

<us-bibliographic-data-grant>
    <publication-reference>
        <document-id>
            <country>US</country>
            <doc-number>D0607176</doc-number>
            <kind>S1</kind>
            <date>20100105</date>
        </document-id>
    </publication-reference>

    <application-reference appl-type="design">
        <document-id>
            <country>US</country>
            <doc-number>29327507</doc-number>
            <date>20081107</date>
        </document-id>
    </application-reference>

    <invention-title id="d0e55">Doughnut product with six appendages</invention-title>

    <applicants>
        <applicant sequence="001" app-type="applicant-inventor" designation="us-only">
            <addressbook>
            <last-name>Peters</last-name>
            <first-name>Brian Jeffery</first-name>
                <address>
                    <street>7052 Moonlight Cir.</street>
                    <city>Huntington Beach</city>
                    <state>CA</state>
                    <postcode>92647</postcode>
                    <country>US</country>
                </address>
            </addressbook>
            <nationality>
                <country>omitted</country>
            </nationality>
            <residence>
                <country>US</country>
            </residence>
        </applicant>
    </applicants>
</us-bibliographic-data-grant>

我怎样才能得到这样的输出

last-name,first-name,street,city,state,postcode,country
peters,brian jeffery, 7052 moonlight cir.,huntington beach,CA,92647

我对 XML 完全没有经验,请帮忙 在这个 XML 代码中,有很多<addressbook>. 那么如何才能获得applicant第一行中的所有属性,并且下一行被所有值填充。我想这样做是因为我想稍后将 csv 文件导入 sql。

4

2 回答 2

0

如果您只想从一种文件类型转换为另一种文件类型,则应使用工具。这是一个建议——https: //code.google.com/p/xml2csv-conv/

过去,当我需要解释复杂的 xml 文档时,我使用过 xslt。

于 2013-04-06T16:32:39.023 回答
0

我为此使用 BeautifulSoup,只需将您的 filename.xml 替换为“字符串格式”中的 sample_1.xml

from bs4 import BeautifulSoup
with open("sample_1.xml", encoding= 'UTF-8') as fp:
soup = BeautifulSoup(fp, 'xml')
for a in soup.findAll("addressbook"):
    print(a.text)

输出:Peters Brian Jeffery 7052 Moonlight Cir. 美国加利福尼亚州亨廷顿海滩 92647

于 2021-12-22T06:59:32.383 回答