xml解析:
配置文件
1.标签成对出现
2.区分大小写
3.标签要正确嵌套
4.开始部分<?xml version="1.0"encoding="utf-8"?>
5.只能有一个跟节点
6.节点可以有属性
xml解析:
1.dom(文档对象模型):把解析的xml整个加载到内存,组织成object树。
w3cDom dom4j
2.sax:事件驱动式解析,不会在内存中加载整个文档,只会根据自己编写的事件保存数据。
DTD(Document Type Definition)约束XML文件的节点
<!DOCTYPE books[
<!ELEMENT books (book+)>
<!ELEMENT book (bname,price,author)>
<!ELEMENT bname (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ATTLIST book id CDATA #REQUIRED>
]>
#REQUIRED(必需的) #IMPLIED(不是必需的) #FIXED(属性值是固定的)
dom解析案例:
from xml.dom.minidom import parse class book(object): def __init__(self,bname=None,price=None,author=None): self.bname=bname self.price=price self.author=author def __str__(self): return self.bname+'\t'+self.price+'\t'+self.author books=[] doc=parse("doupo.xml") print(doc) #得到根节点 root=doc.documentElement print(root) da=root.getElementsByTagName('book') print(da) for i in da: bna=i.getElementsByTagName('bname')[0].childNodes[0].data pri=i.getElementsByTagName('price')[0].childNodes[0].data aut=i.getElementsByTagName('author')[0].childNodes[0].data books.append(book(bna,pri,aut)) for i in books: print(i)