Python 中的 XML 解析?
Python XML 解析器提供了一种读取和提取 XML 文件中有用信息的最简单方法之一。在本简短教程中,我们将了解如何使用 python ElementTree XML API 解析 XML 文件、修改和创建 XML 文档。
Python ElementTree API 是提取、解析和转换 XML 数据最简单的方法之一。
那么让我们开始使用 ElementTree 使用 python XML 解析器吧
示例1
创建 XML 文件
首先,我们将创建一个包含一个元素和一个子元素的新 XML 文件。
#Import required library import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element root = xml.Element("users") children1 = xml.Element("user") root.append(children1) tree = xml.ElementTree(root) with open(filename, "wb") as fh: tree.write(fh) if __name__ == "__main__": createXML("testXML.xml")
运行上述程序后,将在我们当前的默认工作目录中创建一个名为“textXML.xml”的新文件。
其内容类似于
<users><user /></users>
请注意,写入文件时,我们使用了“wb”模式,即以二进制模式写入文件。
向 XML 元素添加值
让我们为上述程序中的 XML 元素赋一些值。
#Import required library import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element root = xml.Element("users") children1 = xml.Element("user") root.append(children1) userId1 = xml.SubElement(children1, "Id") userId1.text = "hello" userName1 = xml.SubElement(children1, "Name") userName1.text = "Rajesh" tree = xml.ElementTree(root) with open(filename, "wb") as fh: tree.write(fh) if __name__ == "__main__": createXML("testXML.xml")
运行上述程序后,我们将看到添加了带有值的新元素,类似于
<users> <user> <Id>hello</Id> <Name>Rajesh</Name> </user> </users>
以上输出看起来不错。
现在让我们开始编辑文件
编辑 XML 数据
让我们从文件中向我们现有的程序中添加一些数据。
newdata.xml
<users> <user> <id>1a</id> <name>Rajesh</name> <salary>NA</salary> </user> <user> <id>2b</id> <name>TutorialsPoint</name> <salary>NA</salary> </user> <user> <id>3c</id> <name>Others</name> <salary>NA</salary> </user> </users>
以上是我们当前的 xml 文件,让我们尝试更新每个用户的薪水。
#Import required library import xml.etree.ElementTree as ET def updateET(filename): # Start with the root element tree = ET.ElementTree(file=filename) root = tree.getroot() for salary in root.iter('salary'): salary.text = '500000' tree = ET.ElementTree(root) with open("newdata.xml", "wb") as fh: tree.write(fh) if __name__ == "__main__": updateET("newdata.xml")
输出
因此,我们看到薪水已从“NA”更改为“500000”。
示例:Python XML 解析器
现在让我们编写另一个程序,该程序将解析文件中存在的 XML 数据并打印数据。
#Import required library import xml.etree.cElementTree as ET def parseXML(file_name): # Parse XML with ElementTree tree = ET.ElementTree(file=file_name) print(tree.getroot()) root = tree.getroot() print("tag=%s, attrib=%s" % (root.tag, root.attrib)) # get the information via the children! print("-" * 25) print("Iterating using getchildren()") print("-" * 25) users = root.getchildren() for user in users: user_children = user.getchildren() for user_child in user_children: print("%s=%s" % (user_child.tag, user_child.text)) if __name__ == "__main__": parseXML("newdata.xml")
输出
<Element 'users' at 0x0551A5A0> tag = users, attrib = {} ------------------------- Iterating using getchildren() ------------------------- id = 1a name = Rajesh salary = 500000 id = 2b name = TutorialsPoint salary = 500000 id = 3c name = Others salary = 500000
广告