Python etree控件空标签格式

标签 python xml

当使用 Python 的 etree 创建 XML 文件时,如果我们使用 SubElement 向文件写入一个空标记,我得到:

<MyTag />

不幸的是,我们在 Fortran 中使用的 XML 解析器库无法处理这个问题,即使它是一个正确的标记。它需要看到:

<MyTag></MyTag>

有没有办法更改格式规则或 etree 中的某些内容以使其工作?

最佳答案

从 Python 3.4 开始,您可以使用 short_empty_elements tostring() function 的参数和 ElementTRee.write() method :

>>> 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!

关于Python etree控件空标签格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460677/

相关文章:

java - 如何从 Java 中的 XML 中读取带有等号的属性标记?

java - XSD 在验证 xsd 期间忽略命名空间并导入

python - python同时等待并通知多个线程

python - Cassandra /皮卡萨 : get_slice()/get_indexed_slice() fails with TApplicationException: Unknown Result

python - 在 Python 中使用正则表达式查找字符串中的多年经验

php - 无法使用 PHP 中的 xpath() 函数从 XML 中检索数据

java - 将 Java、XML、JavaScript 等 pretty-print 成 HTML

不同服务器上的 Python 3.5 dill pickling/unpickling : "KeyError: ' ClassType'"

python - matrix_in_spiral_order(matrix) 的空间和时间复杂度

python - 如何使用 python lxml 获取 html 元素