Python - 在没有根的情况下向 xml 添加新元素?
Posted
技术标签:
【中文标题】Python - 在没有根的情况下向 xml 添加新元素?【英文标题】:Python - add new elements to xml without a root? 【发布时间】:2021-11-28 06:48:55 【问题描述】:我需要制作具有如下结构的xml:
<?xml version='1.0' encoding='utf-8'?>
<tag1 atrib1='bla' atrib1='bla' atrib1='bla' atrib1='bla'>
<tag2 atrib = 'something'>
<tag3 atrib = 'something'>
<tag4 atrib = '..'>
<tag5 atrib = 'important'><div><h1>ContentFrom **OldXml.xml** </h1></div>
...
可以这样创建吗? 由于没有定义根元素(每个元素都是“根”),我应该逐个元素地创建..
任何帮助都会有所帮助, 谢谢!
【问题讨论】:
你必须有一个根。它可以像<root></root>
所以无法生成像我这样结构的文档?
有可能——只要确保你用 root 包装元素
不明白你的意思,你能举个例子吗
看我的回答。我希望它足够清楚。
【参考方案1】:
见下文。
假设你的数据在data
import xml.etree.ElementTree as ET
data = [[1],['x','y'],['k',12,'zz']]
root = ET.Element("root")
for i,entry in enumerate(data):
ET.SubElement(root,f'tagi',attrib=f'py':str(v) for y,v in enumerate(entry))
ET.dump(root)
输出
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tag0 p0="1" />
<tag1 p0="x" p1="y" />
<tag2 p0="k" p1="12" p2="zz" />
</root>
【讨论】:
谢谢!这有帮助!【参考方案2】:<?xml version='1.0' encoding='utf-8'?>
<tag1 atrib1='bla' atrib1='bla' atrib1='bla' atrib1='bla'>
<tag2 atrib = 'something'>
<tag3 atrib = 'something'>
<tag4 atrib = '..'>
<tag5 atrib = 'important'><div><h1>ContentFrom **OldXml.xml** </h1></div>
这不是 XML 文档,XML specification
一个数据对象是一个 XML 文档,如果它是格式良好的,如定义 本规范
你的例子违反了以下规则
只有一个元素,称为根或文档元素,没有 其中一部分出现在任何其他元素的内容中。
和
对于文档中的每个非根元素
C
,都有一个 文档中的元素P
使得C
在P
的内容中, 但不在内容中的任何其他元素的内容中P
.
【讨论】:
我明白了,谢谢!你认为我可以以 xml 的形式创建它,具有漂亮的打印结构,然后以某种方式删除空格并具有这样的最终格式吗?能做到吗? 是的,使用您已经使用的任何库并放置虚拟根目录,然后重载保存/加载函数以更改格式 - 在这种情况下,去除最外面的虚拟根目录。 不确定你的想法以上是关于Python - 在没有根的情况下向 xml 添加新元素?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有预先确定的 ViewContainerRef 的情况下向 DOM 动态添加角度组件?