xml檔案介紹及解析
什麼是xml
XML 指可擴充套件標記語言(eXtensible Markup Language)。
XML 被設計用來傳輸和儲存資料。
XML是一套定義語義標記的規則,這些標記將文件分成許多部件並對這些部件加以標識。
它也是元標記語言,即定義了用於定義其他與特定領域有關的、語義的、結構化的標記語言的句法語言。
要注意xml語法規範:
1.標籤成對出現
2.區分大小寫
3.標籤要正確巢狀
4.開始部分必須是
<?xml version="1.0" encoding="utf-8"?>
#xml用什麼寫都行 要是出現亂碼 把utf-8換成gbk
5.只能有一個根節點
6.節點可以有屬性
DTD(Document Type Definition):約束XML檔案的節點 通俗的理解是規定我們xml檔案該怎麼樣去寫
<!DOCTYPE students [ # students是根節點
<!ELEMENT students (student+)> # +代表可以一個或者多個
<!ELEMENT student (name+,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED>
# ATTLIST屬性的意思 CDATA是純文字的意思
# student節點有屬性屬性名字叫id,屬性的值是純文字
]>
#REQUIRED(必需的),#IMPLIED(不是必需的),#FIXED(屬性值是固定的)
例:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students [
<!ELEMENT students (student+)>
<!ELEMENT student (name+,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED>
]>
<students>
<student id="1">
<name>小明</name>
<name>小李</name>
<age>18</age>
<sex>男</sex>
</student>
<student id="2">
<name>小紅</name>
<name>小每</name>
<age>16</age>
<sex>女</sex>
</student>
</students>
xml解析
1.dom(文件物件模型) :把解析的xml整個載入到記憶體,組織成object樹。常用的解析方式
2.sax:事件驅動式解析,不會在記憶體中載入整個文件,只會根據自己編寫的事件儲存資料。
3.ElementTree解析:ElementTree就像一個輕量級的DOM,具有方便友好的API。程式碼可用性好,速度快,消耗記憶體少。
例
通過dom進行解析
from xml.dom.minidom import parse
class Student():
def __init__(self,name=None,age=None,sex=None,id=None):
self.name=name
self.age=age
self.sex=sex
self.id=id
def __repr__(self):
if len(self.name.encode("utf-8"))<=8:
return self.id+"\t"+self.name+'\t'+self.age+'\t'+self.sex
else:
return self.id+"\t"+self.name+'\t\t'+self.age+'\t'+self.sex
doom = parse("lianxi.xml")
list1=[]
class DomParse:
def __init__(self):
self.stu=None
def text(self):
students = doom.getElementsByTagName("student")
for stu in students:
self.stu = Student()
self.stu.name=stu.getElementsByTagName("name")[0].childNodes[0].data
self.stu.age=stu.getElementsByTagName("age")[0].childNodes[0].data
self.stu.sex=stu.getElementsByTagName("sex")[0].childNodes[0].data
self.stu.id=stu.getAttribute("id")
list1.append(self.stu)
for i in list1:
print(i)
a=DomParse()
a.text()
通過sax進行解析
from xml.sax import parse
from xml.sax.handler import ContentHandler
class Student:
def __init__(self,id=None,name=None,age=None,sex=None):
self.id=id
self.name=name
self.age=age
self.sex=sex
def __repr__(self):
if len(self.name.encode("utf-8"))<=8:
return self.id+"\t"+self.name+'\t\t'+self.age+'\t'+self.sex
else:
return self.id + "\t" + self.name + '\t' + self.age + '\t' + self.sex
stuList=[]
class SaxParser(ContentHandler):
def __init__(self,name=None):
self.name=name
self.stu=None
# def startDocument(self):
# print("starDocument.....")
# def endDocument(self):
# print("endDocument.....")
def startElement(self, name, attrs):
if name=="student":
self.stu=Student()
self.stu.id=attrs["id"]
self.name=name
def characters(self, content):
if self.name=="name":
self.stu.name=content
elif self.name=="age":
self.stu.age=content
elif self.name=="sex":
self.stu.sex=content
def endElement(self, name):
if name=="student":
stuList.append(self.stu)
self.name=None
parse("lianxi.xml",SaxParser())
for s in stuList:
print(s)
通過ElementTree進行解析
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
class Student:
def __init__(self, id=None, name=None, age=None, sex=None):
self.id = id
self.name = name
self.age = age
self.sex = sex
def __repr__(self):
if len(self.name.encode("utf-8")) <= 8:
return self.id + "\t" + self.name + '\t\t' + self.age + '\t' + self.sex
else:
return self.id + "\t" + self.name + '\t' + self.age + '\t' + self.sex
stuList = []
def text1():
tree = ET.parse("lianxi.xml")
students = tree.findall("student")
for stu in students:
student = Student()
student.id = stu.attrib['id']
children = stu.getchildren()
student.name = children[0].text
student.age = children[1].text
student.sex = children[2].text
stuList.append(student)
text1()
for i in stuList:
print(i)
相關推薦
xml檔案介紹及解析
什麼是xml XML 指可擴充套件標記語言(eXtensible Markup Language)。 XML 被設計用來傳輸和儲存資料。 XML是一套定義語義標記的規則,這些標記將文件分成許多部件並對這些部件加以標識。 它也是元標記語言,即定義了用於定
對xml檔案的sax解析(增刪改查)
crud(增刪改查): c:creat r:retrieve u:update d:delete 以下筆記來自於韓順平老師的講解。 現在是用java來操作。 第一步:新建java工程。file-new-Java Project,輸入工程的名字,點選finish. 第二步:放
SSM 生成mapper中xml檔案:未能解析對映資源:“檔案巢狀異常
錯誤日記我就網上隨便找個貼著: 錯誤一: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path res
Android-通過網路獲取xml檔案使用pull解析得到伺服器中的資訊(新聞客戶端)
通過網路獲取xml檔案,使用pull解析該檔案得到伺服器中的資訊; demo中使用了一個開源的圖片載入包,故上傳原始碼方便檢視; 效果圖: 步驟: 1.連線伺服器獲取xml檔案; 2.使用pull解析xml檔案存入實體物件中; 3.解析後將實體物件存入List集合中;
MySQL資料檔案介紹及存放位置
MySQL的每個資料庫都對應存放在一個與資料庫同名的資料夾中,MySQL資料庫檔案包括MySQL(server)所建資料庫檔案和MySQL(server)所用儲存引擎建立的資料庫檔案。 1、MySQL(server)建立並管理的資料庫檔案: .frm檔案:儲存資料表的框架結構,檔名與表名相同,每個表對應一個
Apache Camel 中camel配置檔案引入其他xml檔案介紹--將camel配置檔案拆分後並引用
1、rest 可以在新檔案中用<restContext/>標籤 例如:需要匯入的檔案myCoolRests.xml,內容為 <restContext id="myCoolRest" xmlns="http://camel.apache.org/schema
Java class 檔案結構及解析
java檔案經過編譯之後就可以形成class檔案。簡而言之,java檔案是我們自己書寫的檔案,也是給我們看的,而class檔案則是給VM看的。但是我們用notepad檢視class檔案時,卻發現那是一串二進位制的檔案。那麼class檔案到底是些啥東西呢? 本質
關於ANT-build.xml檔案介紹和部分命令使用
Ant的優點 Ant是Apache軟體基金會JAKARTA目錄中的一個子專案,它有以下的優點。跨平臺性。Ant是存Java語言編寫的,所示具有很好的跨平臺性。操作簡單。Ant是由一個內建任務和可選任務組成的。Ant執行時需要一個XML檔案(構建檔案)。Ant通過呼叫ta
XML檔案DTD路徑解析
1.XML檔案宣告的dtd檔案路徑如下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Applicati
[C3P0]XML檔案配置及使用
總檔案c3p0-config.xml配置: <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <def
Android如何獲取asset下的xml檔案,並解析
1.asset下的自定義xml檔案:<Language cat="it"> <lan id="1"> <name>Java</name> <ide>Eclipse</ide
Android核心技術-day02-09-生成xml檔案 及 解析
AndroidManifest.xml 方式一: package com.gaozewen.savexmlinfo; import android.Manifest; import android.os.Bundle; import android.os.Environment;
IOS資料處理及版本特性-解析XML檔案
準備一個需要解析的xml檔案 <?xml version="1.0" encoding="UTF-8" ?> <workers> <worker id='1'> <n
Java解析XML檔案的常用方法介紹
1 import java.io.IOException; 2 3 import javax.xml.parsers.DocumentBuilder; 4 import javax.xml.parsers.DocumentBuilderFactory; 5 import javax.x
struts2中struts.xml和web.xml檔案解析及工作原理
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmln
JAVA以及JSP中讀取XML檔案(解析及路徑問題)
在系統開發過程中,從配置檔案中讀取配置資訊是每一個系統必須具備的功能,例如,我們要配置讀取資料庫配置資訊,包括驅動程式名、連線字串,使用者名稱,口令等資訊,由於這些資訊會隨著使用者的不同而發生
Python解析大XML檔案及讀取XML不全的問題
之前用python的minidom寫過解析xml的指令碼檔案,在前期是比較好用的,因為xml檔案比較小。但是當xml檔案超過了70M的時候,minidom不僅效率低,而且會佔用非常大的記憶體空間,因為他是將整個xml讀入進去並且按照整個xml樹進行建樹(雖然這樣寫程式碼邏輯
AngularCLI介紹及配置文件主要參數含義解析
prefix 域名 最佳實踐 netem cin 存儲 ng- idt 還需 使用Angular CLI可以快速,簡單的搭建一個angular2或angular4項目,是只要掌握幾行命令就能構建出前端架構的最佳實踐,它本質也是使用了webpack來編譯,打包,壓縮等構建的事
Spring介紹及配置(XML文件配置和註解配置)
處理 tis 配置文件 3.0 span 特點 inverse logging 結構 本節內容: Spring介紹 Spring搭建 Spring概念 Spring配置講解 使用註解配置Spring 一、Spring介紹 1. 什麽是Spring
[z]分區truncate操作的介紹及對全局索引和空間釋放影響的案例解析
執行計劃 失效 run segment ble 技術 一點 lte cascade [z]https://www.2cto.com/database/201301/181226.html 環境: [sql] [oracle@localhost ~]$ uname -r