0

我是 python 新手,一直在努力完成一些事情,但到目前为止还没有成功。我正在尝试打开一个 xml,删除整个标签及其内容,并在 xml 中移动其他标签。

这是我原来的导入 xml:

<?xml version="1.0" encoding="UTF-8"?>
<package>
    <language>en-GB</language>
    <video>
        <original_spoken_locale>en-US</original_spoken_locale>
        <copyright_cline>2012 copyright</copyright_cline>
        <release_date>2012-04-23</release_date>
        <title>Amazing Film</title>
    </video>
    <provider>testprovider</provider>
</package>

我需要删除<copyright_cline>标签和<title>标签。然后我需要将<provider>标签向上移动到标签中并将<video>其放置在标签之间。<original_spoken_locale><release_date>

这是生成的导出 xml:

<?xml version="1.0" encoding="UTF-8"?>
<package>
    <language>en-GB</language>
    <video>
        <original_spoken_locale>en-US</original_spoken_locale>
        <provider>testprovider</provider>
        <release_date>2012-04-23</release_date>
    </video>
</package>

我尝试了各种解决方案,但我完全没有工作。我喜欢xml.etree模块,我也尝试安装lxml,但无法安装,所以想使用不需要安装的模块。我在用python 3.3.2.

虽然这个网站是一个惊人的信息来源,但我的知识不足以掌握它。真正有帮助的是一个示例工作代码,然后我可以学习并希望理解它。非常感谢。

4

1 回答 1

0

使用bs4.BeautifulSoup

from bs4 import BeautifulSoup
xml = """<?xml version="1.0" encoding="UTF-8"?>
<package>
    <language>en-GB</language>
    <video>
        <original_spoken_locale>en-US</original_spoken_locale>
        <copyright_cline>2012 copyright</copyright_cline>
        <release_date>2012-04-23</release_date>
        <title>Amazing Film</title>
    </video>
    <provider>testprovider</provider>
</package>"""
soup = BeautifulSoup(xml, 'xml')
soup.copyright_cline.replace_with(soup.provider)
soup.title.extract()
print soup

印刷:

<?xml version="1.0" encoding="utf-8"?>
<package>
<language>en-GB</language>
<video>
<original_spoken_locale>en-US</original_spoken_locale>
<provider>testprovider</provider>
<release_date>2012-04-23</release_date>

</video>

</package>

我不明白为什么你不能安装lxml模块,但安装BeautifulSoup只是做一个简单的pip install bs4手动下载它

于 2013-06-03T06:42:38.970 回答