parsing XML files in Python also has DOM and sax two ways, which first describes how to parse XML using the DOM, which is the DOM-generated XML file, and the next article continues to introduce the DOM parsing XML file.
In the build XML file, we use the following method mainly to complete.
Main methods
1. Generating XML nodes (node)
The code is as follows:
CreateElement ("Node_name")
2. Add attribute values to the node (Attribute)
The code is as follows:
Node.setattribute ("Att_name", "Arr_value")
3. Tag Value of the node (data)
The code is as follows:
createTextNode ("Node_value")
1th, 3 points after the node (node value) is created, you also need to use the following method to add to the location of the pointing node:
The code is as follows:
Prev_node.appendchild (Cur_node)
The prev_node here is to add the upper node of the node, and Cur_node is the node that is currently being added.
Code Demo
The following code shows how to use the DOM to generate XML, which is a simple version, as follows:
The code is as follows:
'''
Created on 2012-8-28
@author: walfred
@module: Domxml.genxml
@description:
'''
Import Xml.dom.minidom as Dom
if __name__ = = "__main__":
doc = Dom.document ()
Root_node = Doc.createelement ("Book_store")
Root_node.setattribute ("name", "Newhua")
Root_node.setattribute ("website", "http://www.bitsCN.com")
Doc.appendchild (Root_node)
Book_node = Doc.createelement ("Book1")
Book_name_node = doc.createelement ("name")
Book_name_value = Doc.createtextnode ("Hamlet")
Book_name_node.appendchild (Book_name_value)
Book_node.appendchild (Book_name_node)
Book_author_node = Doc.createelement ("author")
Book_author_value = Doc.createtextnode ("William Shakespeare")
Book_author_node.appendchild (Book_author_value)
Book_node.appendchild (Book_author_node)
Root_node.appendchild (Book_node)
f = open ("Book_store.xml", "W")
F.write (doc.toprettyxml (indent = "\ T", newl = "\ n", encoding = "Utf-8"))
F.close ()
This code will generate a book_store.xml file in the current directory, and I'll paste it in the following:
The code is as follows:
<?xml version= "1.0" encoding= "Utf-8"?>
Hamlet
William Shakespeare
Of course, once you have mastered these basic methods, we can use a class to do better, this class we call Xmlgenerator, the code is as follows:
The code is as follows:
'''
Created on 2012-8-28
@author: walfred
@module: Domxml.wxmlbydom
@description:
'''
Import Xml.dom.minidom as Dom
Class Xmlgenerator:
def __init__ (self, xml_name):
Self.doc = Dom.document ()
Self.xml_name = Xml_name
def createnode (self, node_name):
Return Self.doc.createElement (Node_name)
def addNode (self, node, Prev_node = None):
Cur_node = node
If Prev_node is not None:
Prev_node.appendchild (Cur_node)
Else
Self.doc.appendChild (Cur_node)
Return Cur_node
def setnodeattr (self, node, att_name, value):
Cur_node = node
Cur_node.setattribute (Att_name, value)
def setnodevalue (self, Cur_node, value):
Node_data = Self.doc.createTextNode (value)
Cur_node.appendchild (Node_data)
def genxml (self):
f = open (Self.xml_name, "w")
F.write (self.doc.toprettyxml (indent = "\ T", newl = "\ n", encoding = "Utf-8"))
F.close ()
if __name__ = = "__main__":
Myxmlgenerator = Xmlgenerator ("Book_store.xml")
#xml root Node
Node_book_store = Myxmlgenerator.createnode ("Book_store")
Myxmlgenerator.setnodeattr (Node_book_store, "name", "New Hua")
Myxmlgenerator.setnodeattr (Node_book_store, "website", "http://www.bitsCN.com")
Myxmlgenerator.addnode (node = node_book_store)
#book01
node_book_01 = Myxmlgenerator.createnode ("book")
Node_book_01_name = Myxmlgenerator.createnode ("name")
Myxmlgenerator.setnodevalue (Node_book_01_name, "Hamlet")
Myxmlgenerator.addnode (Node_book_01_name, node_book_01)
Node_book_01_author = Myxmlgenerator.createnode ("author")
Myxmlgenerator.setnodevalue (Node_book_01_author, "William Shakespeare")
Myxmlgenerator.addnode (Node_book_01_author, node_book_01)
Node_book_01_price = Myxmlgenerator.createnode ("Price")
Myxmlgenerator.setnodevalue (Node_book_01_price, "$ $")
Myxmlgenerator.addnode (Node_book_01_price, node_book_01)
Node_book_01_grade = Myxmlgenerator.createnode ("Grade")
Myxmlgenerator.setnodevalue (Node_book_01_grade, "good")
Myxmlgenerator.addnode (Node_book_01_grade, node_book_01)
Myxmlgenerator.addnode (node_book_01, Node_book_store)
#book 02
node_book_02 = Myxmlgenerator.createnode ("book")
Node_book_02_name = Myxmlgenerator.createnode ("name")
Myxmlgenerator.setnodevalue (Node_book_02_name, "Shuihu")
Myxmlgenerator.addnode (Node_book_02_name, node_book_02)
Node_book_02_author = Myxmlgenerator.createnode ("author")
Myxmlgenerator.setnodevalue (Node_book_02_author, "Naian shi")
Myxmlgenerator.addnode (Node_book_02_author, node_book_02)
Node_book_02_price = Myxmlgenerator.createnode ("Price")
Myxmlgenerator.setnodevalue (Node_book_02_price, "$")
Myxmlgenerator.addnode (Node_book_02_price, node_book_02)
Node_book_02_grade = Myxmlgenerator.createnode ("Grade")
Myxmlgenerator.setnodevalue (Node_book_02_grade, "good")
Myxmlgenerator.addnode (Node_book_02_grade, node_book_02)
Myxmlgenerator.addnode (node_book_02, Node_book_store)
#gen
Myxmlgenerator.genxml ()
The same method will generate a Book_store.xml file in this directory, as follows:
The code is as follows:
<?xml version= "1.0" encoding= "Utf-8"?>
Hamlet
William Shakespeare
$
Good
Shuihu
Naian Shi
$
Good
This version is a slightly more advanced version, but because of the time constraints are very rough, readers can play a better.