活动地址:CSDN21天学习挑战赛
·声明 ·根元素 ·子元素 ·属性 ·命名空间 ·限定名
xml可以有声明也可以没有,若有,则在第一行
version:正在使用的xml标准版本;
encoding:在此文件中使用的字符编码类型;
standalone:告诉解析器是否要外部信息来解析xml文件;
新建一个样例xml文件
- <collection shelf="New Arrivals">
- <class className="1班">
- <code>2022001code>
- <number>10number>
- <teacher>小白teacher>
- class>
- <class className="2班">
- <code>2022002code>
- <number>20number>
- <teacher>小红teacher>
- class>
- <class className="3班">
- <code>2022003code>
- <number>30number>
- <teacher>小黑teacher>
- class>
- collection>
解析代码——
- import xml.etree.ElementTree as ET
-
- tree = ET.ElementTree(file='1.xml')
- print(type(tree))
-
- root = tree.getroot() # root是根元素
- print(type(root))
- print(root.tag)
-
- for index, child in enumerate(root):
- print("第%s个%s元素,属性:%s" % (index, child.tag, child.attrib))
- for i, child_child in enumerate(child):
- print("标签:%s,内容:%s" % (child_child.tag, child_child.text))
-
- #输出
- <class 'xml.etree.ElementTree.ElementTree'>
- <class 'xml.etree.ElementTree.Element'>
- collection
- 第0个class元素,属性:{'className': '1班'}
- 标签:code,内容:2022001
- 标签:number,内容:10
- 标签:teacher,内容:小白
- 第1个class元素,属性:{'className': '2班'}
- 标签:code,内容:2022002
- 标签:number,内容:20
- 标签:teacher,内容:小红
- 第2个class元素,属性:{'className': '3班'}
- 标签:code,内容:2022003
- 标签:number,内容:30
- 标签:teacher,内容:小黑
- from xml.dom.minidom import parse
-
- # 读取文件
- dom = parse('1.xml')
- # 获取文档元素对象
- elem = dom.documentElement
- # 获取 class
- class_list_obj = elem.getElementsByTagName('class')
- print(class_list_obj)
- print(type(class_list_obj))
- for class_element in class_list_obj:
- # 获取标签中内容
- code = class_element.getElementsByTagName('code')[0].childNodes[0].nodeValue
- number = class_element.getElementsByTagName('number')[0].childNodes[0].nodeValue
- teacher = class_element.getElementsByTagName('teacher')[0].childNodes[0].nodeValue
- print('code:', code, ', number:', number, ', teacher:', teacher)
- #输出
- [
class at 0x20141bc5c10>, class at 0x20141bdf940>, class at 0x20141bdfb80>] - <class 'xml.dom.minicompat.NodeList'>
- code: 2022001 , number: 10 , teacher: 小白
- code: 2022002 , number: 20 , teacher: 小红
- code: 2022003 , number: 30 , teacher: 小黑
- import xml.dom.minidom
-
- # 1、在内存中创建一个空的文档
- doc = xml.dom.minidom.Document()
-
- # 2、创建根元素
- root = doc.createElement('school')
- # print('添加的xml标签为:',root.tagName)
-
- # 3、设置根元素的属性
- root.setAttribute('type', 'type')
-
- # 4、将根节点添加到文档对象中
- doc.appendChild(root)
-
- # 5、创建子元素
- book = doc.createElement('teachers')
-
- # 6、添加注释
- book.appendChild(doc.createComment('这是一条注释'))
-
- # 7、设置子元素的属性
- book.setAttribute('teach', 'occupation')
-
- # 8、子元素中嵌套子元素,并添加文本节点
- name = doc.createElement('name')
- name.appendChild(doc.createTextNode('Mr.Wang'))
- price = doc.createElement('教学时间')
- price.appendChild(doc.createTextNode('12years'))
- number = doc.createElement('time left for teaching')
- number.appendChild(doc.createTextNode('15years'))
-
- # 9、将子元素添加到boot节点中
- book.appendChild(name)
- book.appendChild(price)
- book.appendChild(number)
-
- # 10、将book节点添加到root根元素中
- root.appendChild(book)
-
- # 创建子元素
- book = doc.createElement('students')
-
- # 设置子元素的属性
- book.setAttribute('class', '21')
-
- # 子元素中嵌套子元素,并添加文本节点
- name = doc.createElement('numbers')
- name.appendChild(doc.createTextNode('30'))
- price = doc.createElement('grades')
- price.appendChild(doc.createTextNode('always be good'))
- number = doc.createElement('time for graduation')
- number.appendChild(doc.createTextNode('7.23.2025'))
-
- # 将子元素添加到boot节点中
- book.appendChild(name)
- book.appendChild(price)
- book.appendChild(number)
-
- # 将book节点添加到root根元素中
- root.appendChild(book)
-
- print(root.toxml())
-
- fp = open('./21班情况.xml', 'w', encoding='utf-8') # 需要指定utf-8的文件编码格式,不然notepad中显示十六进制
- doc.writexml(fp, indent='', addindent='\t', newl='\n', encoding='utf-8')
- fp.close()
-
文件结果——