Python XML Parser 教程:读取 xml 文件示例(Minidom、ElementTree)
什么是 XML?
XML 代表可扩展标记语言。它旨在存储和传输中小型数据,广泛用于共享结构化信息。
Python 使您能够解析和修改 XML 文档。为了解析 XML 文档,您需要将整个 XML 文档保存在内存中。在本教程中,我们将了解如何在 Python 中使用 XML minidom 类来加载和解析 XML 文件。
在本教程中,我们将学习-
- 如何使用 minidom 解析 XML
- 如何创建 XML 节点
- 如何使用 ElementTree 解析 XML
如何使用 minidom 解析 XML
我们已经创建了一个我们将要解析的示例 XML 文件。
步骤 1) 在文件中,我们可以看到名字、姓氏、家庭和专业领域(SQL、Python、测试和业务)
步骤 2) 解析完文档后,我们将打印出“节点名称” 文档根目录和“firstchild 标记名” .标记名和节点名是 XML 文件的标准属性。
- 导入 xml.dom.minidom 模块并声明需要解析的文件(myxml.xml)
- 此文件包含有关员工的一些基本信息,例如名字、姓氏、家庭、专业知识等。
- 我们使用 XML minidom 上的 parse 函数来加载和解析 XML 文件
- 我们有变量 doc,doc 得到解析函数的结果
- 我们要打印文件中的节点名和子标记名,所以我们在打印函数中声明它
- 运行代码 - 它从 XML 文件中打印出节点名 (#document),并从 XML 文件中打印出第一个子标记名(员工)
注意 :
Nodename 和 child tagname 是 XML dom 的标准名称或属性。如果您不熟悉这些类型的命名约定。
步骤 3) 我们也可以从 XML 文档中调用 XML 标签列表并打印出来。在这里,我们打印出了 SQL、Python、测试和业务等技能集。
- 声明可变的专业知识,我们将从中提取员工拥有的所有专业知识名称
- 使用名为“getElementsByTagName”的 dom 标准函数
- 这将获得所有名为技能的元素
- 在每个技能标签上声明循环
- 运行代码 - 它将列出四种技能
如何创建 XML 节点
我们可以使用“createElement”函数创建一个新属性,然后将这个新属性或标签附加到现有的 XML 标签中。我们在 XML 文件中添加了一个新标签“BigData”。
- 您必须编写代码才能将新属性 (BigData) 添加到现有 XML 标记中
- 然后你必须打印出带有新属性的 XML 标记,并附加现有的 XML 标记
- 要添加新的 XML 并将其添加到文档中,我们使用代码“doc.create elements”
- 此代码将为我们的新属性“大数据”创建一个新技能标签
- 将此技能标签添加到文档第一个孩子(员工)中
- 运行代码 - 新标签“大数据”将与其他专业知识列表一起出现
XML 解析器示例
Python 2 示例
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") # create a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 示例
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # create a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
如何使用 ElementTree 解析 XML
ElementTree 是用于操作 XML 的 API。 ElementTree 是处理 XML 文件的简单方法。
我们使用以下 XML 文档作为示例数据:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
使用 ElementTree 读取 XML:
我们必须先导入 xml.etree.ElementTree 模块。
import xml.etree.ElementTree as ET
现在让我们获取根元素:
root = tree.getroot()
以下是读取上述xml数据的完整代码
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
输出:
Expertise Data: SQL Python
总结:
Python 使您能够一次解析整个 XML 文档,而不是一次解析一行。为了解析 XML 文档,您需要将整个文档保存在内存中。
- 解析 XML 文档
- 导入 xml.dom.minidom
- 使用“parse”函数解析文档(doc=xml.dom.minidom.parse(file name);
- 使用代码(=doc.getElementsByTagName(“xml标签的名称”)从XML文档中调用XML标签列表
- 在 XML 文档中创建和添加新属性
- 使用函数“createElement”
Python
- Python 文件 I/O
- Java BufferedReader:如何通过示例在 Java 中读取文件
- Python String strip() 函数与示例
- Python 字符串长度 | len() 方法示例
- Python 教程中的收益:生成器和收益与返回示例
- 集合中的 Python 计数器示例
- Python 中的 Enumerate() 函数:循环、元组、字符串(示例)
- Python 检查文件是否存在 |如何在 Python 中检查目录是否存在
- Python JSON:编码(转储)、解码(加载)和读取 JSON 文件
- Python 列表 index() 与示例
- Python - 文件 I/O
- Python - XML 处理