使用Python的etree创建XML文件时,如果我们使用文件写入空标记SubElement,我会得到:
<MyTag />
Run Code Online (Sandbox Code Playgroud)
不幸的是,我们在Fortran中使用的XML解析器库虽然它是一个正确的标签,却无法处理它.它需要看到:
<MyTag></MyTag>
Run Code Online (Sandbox Code Playgroud)
有没有办法改变格式规则或etree中的某些东西使其工作?
Mar*_*ers 13
从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>'
Run Code Online (Sandbox Code Playgroud)
在较旧的Python版本(2.7到3.3)中,作为解决html方法,您可以使用该方法写出文档:
>>> from xml.etree import ElementTree as ET
>>> ET.tostring(ET.fromstring('<mytag/>'), method='html')
'<mytag></mytag>'
Run Code Online (Sandbox Code Playgroud)
无论是ElementTree.write()方法和tostring()功能支持的method关键字参数.
甚至在早期版本的Python(2.6及更早版本)中,您都可以安装外部ElementTree库; 1.3版支持该关键字.
是的,这听起来有点奇怪,但html输出主要输出空元素作为开始和结束标记.有些元素最终仍然是空标记元素; 具体地<link/>,<input/>,<br/>和这样.仍然是,或者升级你的Fortran XML解析器来实际解析符合标准的XML!
这在Python 3.4中直接解决。从那时起,的write方法xml.etree.ElementTree.ElementTree具有以下short_empty_elements参数:
控制不包含任何内容的元素的格式。如果为True(默认值),则将它们作为单个自闭标签发出,否则将作为一对开始/结束标签发出。
有关更多详细信息,请参见xml.etree文档。
| 归档时间: |
|
| 查看次数: |
10026 次 |
| 最近记录: |