使用Python的etree创建XML文件时,如果我们使用文件写入空标记SubElement
,我会得到:
<MyTag />
不幸的是,我们在Fortran中使用的XML解析器库虽然它是一个正确的标签,却无法处理它。它需要看到:
<MyTag></MyTag>
有没有办法改变格式规则或etree中的某些东西使其工作?
发布于 2019-02-21 14:22:49
从Python 3.4开始,您可以使用函数和方法的short_empty_elements
参数:tostring()
ElementTRee.write()
>>> from xml.etree import ElementTree as ET
>>> ET.tostring(ET.fromstring('<mytag/>'), short_empty_elements=False)
b'<mytag></mytag>'
在较旧的Python版本(2.7到3.3)中,作为解决html
方法,您可以使用该方法写出文档:
>>> from xml.etree import ElementTree as ET
>>> ET.tostring(ET.fromstring('<mytag/>'), method='html')
'<mytag></mytag>'
无论是ElementTree.write()
方法和tostring()
功能支持的method
关键字参数。
甚至在早期版本的Python(2.6及更早版本)中,您都可以安装外部ElementTree库; 1.3版支持该关键字。
是的,这听起来有点奇怪,但html
输出主要输出空元素作为开始和结束标记。有些元素最终仍然是空标记元素; 具体地<link/>
,<input/>
,<br/>
和这样。仍然是,或者升级你的Fortran XML解析器来实际解析符合标准的XML!
发布于 2019-02-21 16:04:39
这在Python 3.4中直接解决了。从那时起,write
方法xml.etree.ElementTree.ElementTree
有以下short_empty_elements
参数:
控制不包含内容的元素的格式。如果为True(默认值),则它们作为单个自闭合标记发出,否则它们将作为一对开始/结束标记发出。
https://stackoverflow.com/questions/-100006378
复制相似问题