python - 使用 lxml 中的 Element 用换行符打印每个属性

标签 python xml lxml pretty-print

我正在尝试从 Element 对象中打印 XML,以便格式化允许我们在新行中打印标签属性。

    elem = etree.Element()  //Some element
    str = etree.tostring(elem, pretty_print=True)

当前输出看起来像
    <module name="A" description="abc" type="xyz">
        <container/>
    </module>

需要格式化
    <module 
      name="A" 
      description="abc" 
      type="xyz">
      <container/>
    </module>

是否有任何现有的库允许我们为标签中存在的所有属性打印换行符。

最佳答案

据我所知,Etree 无法格式化这样的属性。
或者,您可以尝试 tidylib( http://www.html-tidy.org/ ) 进行格式化。
在 Ubuntu 上,您可以执行以下操作:

sudo apt install tidy
sudo pip install tidylib
然后在新行上使用每个属性进行格式化,请尝试以下操作:
>>> from tidylib import tidy_document
>>> k = """<module name="A" description="abc" type="xyz">
        <container/>
    </module>
"""
>>> document, errors = tidy_document(k, options={'indent-attributes':'yes', 'input-xml':'yes'})
>>> print(document)
<module name="A"
        description="abc"
        type="xyz">
  <container />
</module>
Tidy 是一个具有许多功能的庞大库,您可以阅读有关 indent-attributes 的更多信息。这里的功能:http://api.html-tidy.org/tidy/quickref_5.6.0.html#indent-attributes

关于python - 使用 lxml 中的 Element 用换行符打印每个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49805914/

相关文章:

xml - 在 Rss 或 Atom-feeds 中使用 data-uri 嵌入图像

Python 3从另一个函数更改函数中的变量

python - mpi4py 程序的意外输出

xml - 将命名空间前缀添加到根节点

xml - 如何使用 XmlService 检索值?

python - (不是这样)子节点到列表的高级 xsl 转换

python - 使用 lambda 表达式编译 Python 3.7 找不到封闭函数

python - 在 Python 中查找常见数字

python - 使用 lxml etree 通过 xml 文件进行条件循环

python-2.7 - 将俄语字符串转换为日期时间