Python删除xml标签并移动xml标签

时间:2013-06-03 06:27:51

标签: python xml tags

我是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.

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

1 个答案:

答案 0 :(得分: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 bs4download it manually