Python脚本从XML文件中删除所有注释

释放双眼,带上耳机,听听看~!

我正在尝试构建一个 python脚本,它将接收 XML文档并从中删除所有注释块.

我尝试过以下方面:


1
2
3
4
5
6
7
1tree = ElementTree()
2tree.parse(file)
3commentElements = tree.findall('//comment()')
4
5for element in commentElements:
6    element.parentNode.remove(element)
7

这样做会从python中产生一个奇怪的错误:“KeyError:'()’

我知道有很多方法可以使用其他方法(如sed)轻松编辑文件,但我必须在python脚本中完成.

comment()是ElementTree不支持的XPath节点测试.

你可以在lxml上使用comment().这个库与ElementTree非常相似,它完全支持XPath 1.0.

以下是使用lxml删除注释的方法:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1from lxml import etree
2
3XML = """<root>
4  <!-- COMMENT 1 -->
5  <x>TEXT 1</x>
6  <y>TEXT 2 <!-- COMMENT 2 --></y>
7</root>"""
8
9tree = etree.fromstring(XML)
10
11comments = tree.xpath('//comment()')
12
13for c in comments:
14    p = c.getparent()
15    p.remove(c)
16
17print etree.tostring(tree)
18

输出:


1
2
3
4
5
1<root>
2  <x>TEXT 1</x>
3  <y>TEXT 2 </y>
4</root>
5

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++设计模式

2022-1-11 12:36:11

安全经验

WordPress 4.4.2 安全和维护版本发布

2016-2-4 11:12:22

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索