XML代表可扩展标记语言。 它旨在存储和传输中小型数据,并广泛用于共享结构化信息。
Python使您能够解析和修改XML文档。 为了解析XML文档,您需要在内存中保存整个XML文档。 在本教程中,我们将看到如何在Python中使用XML minidom类加载和解析XML文件。
我们已经创建了一个示例XML文件,我们将对其进行分析。
步骤1)在文件中,我们可以看到名字,姓氏,住所和专业领域(SQL,Python,测试和业务)
步骤2)解析完文档后,我们将打印出文档根目录的“节点名称”和“ firstchild标记名”。 标记名和节点名是XML文件的标准属性。
注意:
节点名和子标记名是XML dom的标准名称或属性。 如果您不熟悉这些类型的命名约定。
步骤3)我们还可以从XML文档中调用XML标签列表并打印出来。 在这里,我们打印出了一组技能,例如SQL,Python,测试和业务。
我们可以使用“ createElement”函数创建一个新属性,然后将此新属性或标签附加到现有XML标签上。 我们在XML文件中添加了一个新标签“ BigData”。
XML Parser Example
Python 2 Example
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 Example
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的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)
output:
Expertise Data:
SQL
Python
Python使您能够一次解析整个XML文档,而一次不只是一行。 为了解析XML文档,您需要将整个文档存储在内存中。