在某些元素中插入 ElementTree 时,如何避免在生成的 XML 文件中出现错误缩进?

巴列克桑达尔

我正在动态生成大量 XML 数据。每个文档都旨在测试处理它的软件中的特定功能。

一个文档由多个不同的块组成。为了简单起见,假设上面的文档是我使用的:

<doc>
  <attributes>
    <attr/>
    <attr/>
  </attributes>
  <items>
    <item/>
    <item/>
    <item/>
  </items>
</doc>

attr元素的数量各不相同,同样适用于元素的数量item然而,每个的结构不会改变(只有里面的数据)。

为了让我的 Python 脚本更具可读性,我存储了一堆模板 XML 文件,每个文件代表一个重复元素(如果有的话,还有它的所有子元素)。在我的主要脚本中使用lxml创建docattributesitems给定的参数定义多少itemattr元素有需要是生成的XML文档中,我只是做一个循环,加载相应的模板,调整里面的数据,然后将其添加到相应的父(这里attributesitems元素):

from lxml import etree

attrs = 2
its = 10

root = etree.Element('doc')
root.addprevious(etree.Comment('...'))
doc = etree.ElementTree(root)

attributes = etree.SubElement(root, 'Attributes')
for a in range(0, attrs):
  attr = etree.parse('attribute.xml', parser=etree.XMLParser(remove_comments=True))
  attributes.append(attr.getroot()

items = etree.SubElement(root, 'Items')
for i in range(0, its):
  item = etree.parse('item.xml', parser=etree.XMLParser(remove_comments=True))
  items.append(item.getroot()

etree.tostring(doc, encoding='UTF-8', xml_declaration=True, pretty_print=True)

不过,我注意到一件事,这本身不是错误,但在查看生成的 XML 文档时相当明显 - 缩进在插入子树XML 的位置完全混乱我可以通过使用一些 XML 格式化工具(例如 Visual Studio Code 或 Notepad++)来解决这个问题,但我想知道为什么会发生这种情况。

微信

remove_blank_text=True创建 XML 解析器时使用

parser=etree.XMLParser(remove_blank_text=True, remove_comments=True)

这将删除所有可忽略的空白,并让后续的漂亮打印“从头开始”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当字符太长时,使用 ElementTree 插入 XML 元素时出现问题

来自分类Dev

如何使用ElementTree解析XML文件并检索子元素

来自分类Dev

如何使用ElementTree在父元素中的文本之间插入XML元素

来自分类Dev

如何使用Python elementTree提取xml数据中的特定元素

来自分类Dev

使用ElementTree获取XML元素时遇到问题

来自分类Dev

使用ElementTree在XML文件末尾找不到元素

来自分类Dev

使用ElementTree修改XML文件

来自分类Dev

使用ElementTree修改XML文件

来自分类Dev

将elementtree转储到xml文件中

来自分类Dev

如何获得Python的ElementTree精美打印到XML文件?

来自分类Dev

如何使用ElementTree递归遍历Python中的XML标签?

来自分类Dev

如何使用ElementTree在python中制作xml树的副本?

来自分类Dev

Python和ElementTree:如何在XML中嵌套元素/子元素?

来自分类Dev

尝试将 ElementTree 写入 XML 文件时出现“TypeError:write() 参数必须是 str,而不是字节”

来自分类Dev

如何将一个全新的元素(在Python中使用ElementTree)添加到XML文件

来自分类Dev

使用ElementTree顺序解析某些XML标签

来自分类Dev

python elementtree - 如何在xml中查找具有特定属性的所有元素

来自分类Dev

如何替换XML文件中节点/元素内的某些字符?

来自分类Dev

Python通过xml ElementTree添加新元素

来自分类Dev

ElementTree XML API不匹配子元素

来自分类Dev

Python XML ElementTree删除所有元素

来自分类Dev

如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

来自分类Dev

如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

来自分类Dev

使用xml.etree.ElementTree获取文件中的XML标签列表

来自分类Dev

如何使用 xml.etree.ElementTree 在 xml 文件上添加子子项

来自分类Dev

如何使用 xml.etree.ElementTree 解析 XML 文件,其子项中有 HTML 内容

来自分类Dev

ElementTree 解析 xml 文件 - 解析问题

来自分类Dev

Python 2.5:XML中的ElementTree和UML

来自分类Dev

使用xml子对象,Python中的ElementTree

Related 相关文章

  1. 1

    当字符太长时,使用 ElementTree 插入 XML 元素时出现问题

  2. 2

    如何使用ElementTree解析XML文件并检索子元素

  3. 3

    如何使用ElementTree在父元素中的文本之间插入XML元素

  4. 4

    如何使用Python elementTree提取xml数据中的特定元素

  5. 5

    使用ElementTree获取XML元素时遇到问题

  6. 6

    使用ElementTree在XML文件末尾找不到元素

  7. 7

    使用ElementTree修改XML文件

  8. 8

    使用ElementTree修改XML文件

  9. 9

    将elementtree转储到xml文件中

  10. 10

    如何获得Python的ElementTree精美打印到XML文件?

  11. 11

    如何使用ElementTree递归遍历Python中的XML标签?

  12. 12

    如何使用ElementTree在python中制作xml树的副本?

  13. 13

    Python和ElementTree:如何在XML中嵌套元素/子元素?

  14. 14

    尝试将 ElementTree 写入 XML 文件时出现“TypeError:write() 参数必须是 str,而不是字节”

  15. 15

    如何将一个全新的元素(在Python中使用ElementTree)添加到XML文件

  16. 16

    使用ElementTree顺序解析某些XML标签

  17. 17

    python elementtree - 如何在xml中查找具有特定属性的所有元素

  18. 18

    如何替换XML文件中节点/元素内的某些字符?

  19. 19

    Python通过xml ElementTree添加新元素

  20. 20

    ElementTree XML API不匹配子元素

  21. 21

    Python XML ElementTree删除所有元素

  22. 22

    如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

  23. 23

    如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

  24. 24

    使用xml.etree.ElementTree获取文件中的XML标签列表

  25. 25

    如何使用 xml.etree.ElementTree 在 xml 文件上添加子子项

  26. 26

    如何使用 xml.etree.ElementTree 解析 XML 文件,其子项中有 HTML 内容

  27. 27

    ElementTree 解析 xml 文件 - 解析问题

  28. 28

    Python 2.5:XML中的ElementTree和UML

  29. 29

    使用xml子对象,Python中的ElementTree

热门标签

归档