在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件。
在生成XML文件中,我们主要使用下面的方法来完成。
主要方法
1、生成XML节点(node)
代码如下:
createElement("node_name")
2、给节点添加属性值(Attribute)
代码如下:
node.setAttribute("att_name", "arr_value")
3、节点的标签值(data)
代码如下:
createTextNode("node_value")
其中第1、3点在创建完节点(节点值)之后,还需使用下面的方法添加到指点的节点的位置下面:
代码如下:
prev_node.appendChild(cur_node)
这里的prev_node要添加节点的上一层节点,而cur_node即为当前要添加的节点了。
代码演示
下面用代码来演示下如何使用Dom来生成XML,这个是简单版本,如下:
代码如下:
'''
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()
这个代码将在当前目录下生成一个book_store.xml文件,我把它也贴在下面:
代码如下:
当然一旦你掌握了这些基本方法之后,我们可以用一个类来更好的完成,这个类我们称之为XMLGenerator,代码如下:
代码如下:
'''
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, "$20")
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, "$200")
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()
同样这个方法会在本目录下生成一个book_store.xml文件,如下:
代码如下:
这个版本算一个稍微高级的版本,但由于时间有限还很显得粗糙,读者可以发挥出更好的。

Is it enough to learn Python for two hours a day? It depends on your goals and learning methods. 1) Develop a clear learning plan, 2) Select appropriate learning resources and methods, 3) Practice and review and consolidate hands-on practice and review and consolidate, and you can gradually master the basic knowledge and advanced functions of Python during this period.

Key applications of Python in web development include the use of Django and Flask frameworks, API development, data analysis and visualization, machine learning and AI, and performance optimization. 1. Django and Flask framework: Django is suitable for rapid development of complex applications, and Flask is suitable for small or highly customized projects. 2. API development: Use Flask or DjangoRESTFramework to build RESTfulAPI. 3. Data analysis and visualization: Use Python to process data and display it through the web interface. 4. Machine Learning and AI: Python is used to build intelligent web applications. 5. Performance optimization: optimized through asynchronous programming, caching and code

Python is better than C in development efficiency, but C is higher in execution performance. 1. Python's concise syntax and rich libraries improve development efficiency. 2.C's compilation-type characteristics and hardware control improve execution performance. When making a choice, you need to weigh the development speed and execution efficiency based on project needs.

Python's real-world applications include data analytics, web development, artificial intelligence and automation. 1) In data analysis, Python uses Pandas and Matplotlib to process and visualize data. 2) In web development, Django and Flask frameworks simplify the creation of web applications. 3) In the field of artificial intelligence, TensorFlow and PyTorch are used to build and train models. 4) In terms of automation, Python scripts can be used for tasks such as copying files.

Python is widely used in data science, web development and automation scripting fields. 1) In data science, Python simplifies data processing and analysis through libraries such as NumPy and Pandas. 2) In web development, the Django and Flask frameworks enable developers to quickly build applications. 3) In automated scripts, Python's simplicity and standard library make it ideal.

Python's flexibility is reflected in multi-paradigm support and dynamic type systems, while ease of use comes from a simple syntax and rich standard library. 1. Flexibility: Supports object-oriented, functional and procedural programming, and dynamic type systems improve development efficiency. 2. Ease of use: The grammar is close to natural language, the standard library covers a wide range of functions, and simplifies the development process.

Python is highly favored for its simplicity and power, suitable for all needs from beginners to advanced developers. Its versatility is reflected in: 1) Easy to learn and use, simple syntax; 2) Rich libraries and frameworks, such as NumPy, Pandas, etc.; 3) Cross-platform support, which can be run on a variety of operating systems; 4) Suitable for scripting and automation tasks to improve work efficiency.

Yes, learn Python in two hours a day. 1. Develop a reasonable study plan, 2. Select the right learning resources, 3. Consolidate the knowledge learned through practice. These steps can help you master Python in a short time.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Dreamweaver Mac version
Visual web development tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.