【发布时间】:2013-06-01 10:05:39
【问题描述】:
我正在尝试打开一个 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> 标记向下移动到<video> 标记下方。
这是导出的 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>
<release_date>2012-04-23</release_date>
</package>
我现在已经成功安装了 lxml,因此正在寻找一个理想的解决方案。
亲切的问候。
我已经能够删除不需要的标签及其内容,但仍然需要能够重新排序/移动其他标签,最好不要替换。我也无法删除这行 xml 代码”
<!--Carpet ID: fd54678-->
这是我目前拥有的:
from lxml import etree
xmlFileIn = '/xmls/metadata.xml'
xmlFileOut = '/xmls/output.xml'
tree = etree.parse(xmlFileIn)
root = tree.getroot()
etree.strip_elements(root, 'assets')
etree.strip_tags(root, 'assets')
etree.strip_elements(root, 'chapters')
etree.strip_tags(root, 'chapters')
etree.strip_elements(root, 'xid')
etree.strip_tags(root, 'xid')
# Write the new xml file
tree.write(xmlFileOut, pretty_print=True, xml_declaration=True, encoding="utf-8")
所以我仍然需要删除<!--Carpet ID: fd54678--> 标签。我想通过通配符删除这些,因为有很多<!--.*-->,因为中间的内容会改变。我还需要知道如何移动标签块。
【问题讨论】: