使用Python创建 XML 文档
可扩展标记语言 (XML)是一种标记语言,您可以使用它来创建自己的标签。它由万维网联盟 (W3C) 创建以克服 HTML 的限制,HTML 是所有网页的基础。 XML 基于 SGML – 标准通用标记语言。它用于存储和传输数据。 XML 不依赖于平台和编程语言。您可以在任何平台上以任何语言编写程序,以使用 XML 发送、接收或存储数据。它定义了一组规则,用于以人类可读和机器可读的格式对文档进行编码。
数据存储在 XML 文档中。 XSL(可扩展样式表语言)文档描述了如何将 XML 文档转换为其他类型的文档(例如 HTML、TXT 甚至 XML)。转换过程称为 XSLT,有时也称为 XSL 转换。
例子:
Robert
Mario
注意:有关详细信息,请参阅 XML |基本
使用Python创建 XML 文档
1) 使用 minidom 创建 XML 文档
首先,我们导入minidom
以使用xml.dom
。然后我们创建root
元素并将其附加到 XML。之后创建父级的子产品,即 Geeks for Geeks。创建子产品后,文件名将保存为“根据您的选择.xml 的任何名称”。不要忘记在您为文件提供的文件名末尾附加 .xml。 Minidom 是文档对象模型接口的最小实现,其 API 类似于其他语言中的 API。它旨在比完整的 DOM 更简单,也更小。
例子:
from xml.dom import minidom
import os
root = minidom.Document()
xml = root.createElement('root')
root.appendChild(xml)
productChild = root.createElement('product')
productChild.setAttribute('name', 'Geeks for Geeks')
xml.appendChild(productChild)
xml_str = root.toprettyxml(indent ="\t")
save_path_file = "gfg.xml"
with open(save_path_file, "w") as f:
f.write(xml_str)
输出:
2) 使用 ElementTree 创建 XML 文档
首先,我们必须导入'xml.etree.ElementTree'
来创建子树。之后,我们制作根元素,并且该根元素应该在预期的块中,否则会出现错误。创建根元素后,我们可以轻松创建树结构。然后该文件将存储为“您要为该 file.xml 提供的名称”。 ElementTree 是一个重要的Python库,它允许您解析和导航 XML 文档。使用 ElementTree,我们可以将文档分解为易于使用的树结构。
例子:
import xml.etree.ElementTree as gfg
def GenerateXML(fileName) :
root = gfg.Element("Catalog")
m1 = gfg.Element("mobile")
root.append (m1)
b1 = gfg.SubElement(m1, "brand")
b1.text = "Redmi"
b2 = gfg.SubElement(m1, "price")
b2.text = "6999"
m2 = gfg.Element("mobile")
root.append (m2)
c1 = gfg.SubElement(m2, "brand")
c1.text = "Samsung"
c2 = gfg.SubElement(m2, "price")
c2.text = "9999"
m3 = gfg.Element("mobile")
root.append (m3)
d1 = gfg.SubElement(m3, "brand")
d1.text = "RealMe"
d2 = gfg.SubElement(m3, "price")
d2.text = "11999"
tree = gfg.ElementTree(root)
with open (fileName, "wb") as files :
tree.write(files)
# Driver Code
if __name__ == "__main__":
GenerateXML("Catalog.xml")
输出:
有三个辅助函数可用于创建 Elementnodes 的层次结构。 Element()
函数创建一个标准节点, SubElement()
函数将一个新节点附加到父节点, Comment()
函数创建一个使用 XML 的注释语法进行序列化的节点。
可以使用withset()
一次配置一个属性值(与根节点一样),或者通过将字典传递给节点工厂(与每个组和播客节点一样)一次性配置所有属性值。