對於xml處理方面,w3c有兩種解決方法:
(1)dom(document object model):
(2)sax(****** api for xml)
先將xml文件解析成dom樹,並放入記憶體,能夠隨機訪問任意節點。
缺點:因為需要放入記憶體操作,所以對檔案大小有限制。
dom位於org.w3c.dom包中。
dom有3個核心的介面:
(1)document:是整個文件的根結點。只有取得了document結點,才能夠對文件操作。
常用方法:
(1)element elem = document.createelement("elem"); //建立乙個結點
(2)attribute attr = document.createattribute("attr"); //建立乙個屬性
(3)text t = document.createtextnode("text"); //建立乙個文字節點
(4)nodelist list = document.getelementbytagname("..."); //尋找某個結點(2)node:dom樹是由結點組成,因此結點是很重要的。
常用方法:
(2)getfirstchild(); //獲得第乙個子節點
(3)getnodevalue(); //得到節點的值
(4)haschildnodes(); //是否還有子節點
(3)nodelist:是由node組成的乙個list。
常用方法:
(1)item(int x); //獲得第幾個節點如果要獲得document物件,需要:(2)getlength(); //獲得list的長度
documentbuilde***ctory factory = documentbuilde***ctory.newinstance();
documentbuilder builder = factory.newdocumentbuilder();
document doc = builder.parse("....");獲得doc
生成xml檔案方法:需要transforme***ctory,transformer,streamresult,domsource。
方法:document doc = builder.newdocument();
生成dom樹
streamresult result = new streamresult(new file("..."));
domsource source = new domsource(doc);
transforme***ctory factory = transforme***ctory.newinstance();
transformer t = factory.newtransformer();
t.transform(source,result);即可
sax介紹:
只能讀取,不能生成或改變,並且只能遍歷。
缺點:只能讀取。
(1)dom4j
dom4j是乙個xml操作的包,為了提供給使用者更簡便的操作xml。
以下是生成乙個xml檔案的**:
document doc = documenthelper.createdocument();
element name = doc.addelement("name");
element first = name.addelement("firstname");
element second = name.addelement("secondname");
first.settext("xia");
second.settext("second");
outputformat format = outputformat.createprettyprint();
format.setencoding("gb2312");
xmlwriter writer = new xmlwriter(new fileoutputstream("out.xml"),format);
writer.write(doc);
writer.close();
以下是讀取乙個xml檔案的**:
saxreader reader = new saxreader();
document doc = reader.read(new file("out.xml"));
element root = doc.getrootelement();
iterator iter = root.elementiterator();
element elem = (element)iter.next();
string str = elem.elementtext("first");
(2)jdom:也是乙個非常好的解析工具,但是效能上比dom4j差了不少,所以不用。
這裡通過id進行查詢。
var elem = document.getelementbyid("id");
elem.innerhtml
生成乙個過程:
var form = document.getelementbyid("form");//獲得表單節點
element button = document.createelement("input");//建立乙個節點
button.setattribute("type","button");//設定屬性
button.setattribute("value","button");//設定屬性
XML中DTD,XSD的區別與應用
xml我們並不陌生,在企業級應用中有很廣的用途。具體就不再說,下面介紹一下dtd,xsd的區別並以xsd為例看spring中定義與使用。1.dtd documnet type definition dtd即文件型別定義,是一種xml約束模式語言,是xml檔案的驗證機制,屬於xml檔案組成的一部分。d...
XML中DTD,XSD的區別與應用
xml我們並不陌生,在企業級應用中有很廣的用途。具體就不再說,下面介紹一下dtd,xsd的區別並以xsd為例看spring中定義與使用。1.dtd documnet type definition dtd即文件型別定義,是一種xml約束模式語言,是xml檔案的驗證機制,屬於xml檔案組成的一部分。d...
XML中DTD,XSD的區別與應用
xml我們並不陌生,在企業級應用中有很廣的用途。具體就不再說,下面介紹一下dtd,xsd的區別並以xsd為例看spring中定義與使用。b size large 1.dtd documnet type definition size b dtd即文件型別定義,是一種xml約束模式語言,是xml檔案的...