使用python的xml.etree模块时,如何转义xml特殊字符(如“>”和“ <”)以在标记内使用?我必须手动这样做吗?etree是否有我所缺少的方法或warg?
考虑:
In [1]: from xml.etree.ElementTree import Element, SubElement, tostring
In [2]: root = Element('filter')
In [3]: root.set('type', 'test')
In [4]: for op in ['<', '>', '=']:
...: sub_elem = SubElement(root, op)
...: child = Element('a')
...: child.text = 'b'
...: sub_elem.append(child)
...:
In [5]: tostring(root)
Out[5]: '<filter type="test"><<><a>b</a></<><>><a>b</a></>><=><a>b</a></=></filter>'
我想在哪里看到以下部分:
<<><a>b</a></<>
我想在哪里看到以下部分:
<<><a>b</a></<>
这不是格式正确的XML。我猜您忘记了分号,但是添加它们并没有帮助。以下也是格式错误的:
<<><a>b</a></<>
在代码中,您要创建一个名为元素<
,>
和=
。那行不通。下面的一切都在XML元素名称禁止:<
,>
,=
,>
,<
。
不幸的是,ElementTree有点松懈,允许您创建伪XML,例如(从问题中得出):
<filter type="test"><<><a>b</a></<><>><a>b</a></>><=><a>b</a></=></filter>
如果您使用而不是使用lxml.etree
(请参阅http://lxml.de)xml.etree.ElementTree
,则会收到错误消息:“ ValueError:无效的标记名称u'<'”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句