1
.什么是xml?
xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
.我们举个栗子:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
我们看格式很像html,但是xml比html格式严谨,并且html用来展示数据,xml用于传输和存储数据。
那么它有如下特征:
- 它是有标签对组成,<aa></aa>
- 标签可以有属性:<aa id='123'></aa>
- 标签对可以嵌入数据:<aa>abc</aa>
- 标签可以嵌入子标签(具有层级关系)
2. 获得标签属性
每个节点都有它的nodeName、nodeValue、nodeType,注:nodeValue是节点的值,只对文本节点有效。from xml.dom import minidom doc = minidom.parse('book.xml') root = doc.documentElement #获得文档对象 # print(dir(root)) print(root.nodeName) #bookstore print(root.nodeValue) #None print(root.nodeType) # 1 编号1,元素节点
nodeType是节点类型
元素节点 Node.ELEMENT_NODE(1)
属性节点 Node.ATTRIBUTE_NODE(2)
文本节点 Node.TEXT_NODE(3)
CDATA节点 Node.CDATA_SECTION_NODE(4)
实体引用名称节点 Node.ENTRY_REFERENCE_NODE(5)
实体名称节点 Node.ENTITY_NODE(6)
处理指令节点 Node.PROCESSING_INSTRUCTION_NODE(7)
注释节点 Node.COMMENT_NODE(8)
文档节点 Node.DOCUMENT_NODE(9)
文档类型节点 Node.DOCUMENT_TYPE_NODE(10)
文档片段节点 Node.DOCUMENT_FRAGMENT_NODE(11)
DTD声明节点 Node.NOTATION_NODE(12)
3. 获得子标签
from xml.dom import minidom
doc = minidom.parse('book.xml')
root = doc.documentElement #获得文档对象
# print(dir(root))
# print(root.nodeName) #bookstore
# print(root.nodeValue) #None
# print(root.nodeType) # 1
books = root.getElementsByTagName('book')
print(type(books)) #<class 'xml.dom.minicompat.NodeList'>
for book in books:
titles = book.getElementsByTagName('title')
print(titles[0].childNodes[0].nodeValue)
结果:
<class 'xml.dom.minicompat.NodeList'>
Harry Potter
Learning XML
Learning XML
4. 获得标签属性值
from xml.dom import minidom
doc = minidom.parse('book.xml')
root = doc.documentElement #获得文档对象
# print(dir(root))
# print(root.nodeName) #bookstore
# print(root.nodeValue) #None
# print(root.nodeType) # 1
# books = root.getElementsByTagName('book')
# print(type(books)) #<class 'xml.dom.minicompat.NodeList'>
# for book in books:
# titles = book.getElementsByTagName('title')
# print(titles[0].childNodes[0].nodeValue)
itemlist = root.getElementsByTagName('title')
print(itemlist[0].getAttribute("lang"))结果:eng

881

被折叠的 条评论
为什么被折叠?



