【问题标题】:python write xml with spacingpython用空格写xml
【发布时间】:2017-05-16 14:27:34
【问题描述】:

有没有办法使用不在一行中的 XML 库在 python 中编写 XML 文件

我有这个代码:

import xml.etree.ElementTree as ET
perm = ET.Element('perm')
connect = ET.SubElement(perm, 'connect').text="*"
download = ET.SubElement(perm, 'download').text="*"
upload = ET.SubElement(perm, 'upload').text="*"
view = ET.SubElement(perm, 'view').text="*"
delFile = ET.SubElement(perm, 'delete_file').text="*"
delDir = ET.SubElement(perm, 'delete_dir').text="*"
rename = ET.SubElement(perm, 'rename').text="*"
create_dir = ET.SubElement(perm, 'create_dir').text="*"
sizeof = ET.SubElement(perm, 'sizeof').text="*"

tree = ET.ElementTree(perm)
tree.write('permission-backup.xml')

但 xml 看起来像这样:

<perm><connect>*</connect><download>*</download><upload>*</upload><view>*</view><delete_file>*</delete_file><delete_dir>*</delete_dir><rename>*</rename><create_dir>*</create_dir><sizeof>*</sizeof></perm>

有什么方法可以让它在不打开文件并重新格式化的情况下写入多行而不是一行?

【问题讨论】:

    标签: python-2.7 xml-parsing


    【解决方案1】:

    解决此问题的一种方法是使用lxml 而不是xml。它是一个直接替换,因此您只需将您的 import 语句更改为

    from lxml import etree as ET
    

    和你的输出语句到

    print(ET.tostring(tree,pretty_print=True),file=open('permission-backup.xml','w'))
    

    这是一个 Python 3 风格的 print() 函数调用,所以你需要这样做

    from __future__ import print_function
    

    如果你还没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多