與解析XML一樣,生成XML文檔也是用到了那4種方法。
一:DOM方法生成XML
步驟:
1:創(chuàng )建DocumentBuilder:DocumentBuilder builder=new DocumentBuilder();
2:創(chuàng )建dom對象:Document dom=builder.newDocument();
3:創(chuàng )建dom中元素:Element element=dom.createElement("元素名");
4:向元素添加子節點(diǎn):element.appendChild(childElement);(dom樹(shù)就是通過(guò)不停appendChild形成的)
5:向元素設置屬性:element.setAttribute("屬性名","屬性值");
6:向元素添加文本內容:element.setTextContent("標簽間內容");
7:把根元素添加至dom中:dom.appendChild(rootElement);(由于子節點(diǎn)都是添加到根結點(diǎn)下的,所以把根結點(diǎn)添加到dom就相當于把整棵標簽樹(shù)添加進(jìn)dom了)
8:把dom對象導出到xml文件:
1)創(chuàng )建轉換器工廠(chǎng):TransformerFactory factory=TransformerFactory.newInstance();
2)由工廠(chǎng)創(chuàng )建轉換器實(shí)例:Transformer transformer=factory.newTransformer();
3)設置轉換格式:transformer.setOutputProperty(屬性,屬性值);//設置輸出到文檔時(shí)的格式,比如:換行等
4)由轉換器把dom資源轉換到結果輸出流,而結果輸出流連接到一個(gè)xml文件:transformer.transform(new DOMSourse(dom),new StreamResult(xml_file));
二:SAX方法操作XML
步驟:
1:創(chuàng )建SAX轉換器工廠(chǎng):SAXTransformerFactory factory=SAXTransformerFactory.newInstance();
2:創(chuàng )建轉換handler:TransformerHandler handler=factory.newTransformerHandler();
3:由handler創(chuàng )建轉換器:Transformer transformer=handler.getTransformer();
4:設置轉換格式:transformer.setOutputProperty(屬性,屬性值);//設置輸出到文檔時(shí)的格式,比如:換行等
5:創(chuàng )建Result連接到xml文件:Result res=new StreamResult(new FileOutputStream(xml_file));
6:關(guān)聯(lián)result到handler:handler.setResult(res);
7:利用handler操作xml文件:
1)打開(kāi)dom對象:handler.startDocument();
2)創(chuàng )建元素:handler.startElement(uri,命名空間,元素名,屬性列表);//沒(méi)有則填null
3)創(chuàng )建子結點(diǎn):handler.startElement(uri,命名空間,子元素名,屬性列表);//在一個(gè)start與end的元素之間添加的結點(diǎn)就是它的子節點(diǎn)
4)為結點(diǎn)添加屬性:上面start的元素名 element.setAttribute("","","屬性名","屬性值");
5)為結點(diǎn)添加文本內容:在一個(gè)element的start與end之間,handler.characters(byte[],start,length);//byte就是文本內容,后面可以進(jìn)行截取
5)鏡像結束元素:hanlder.endElement("","",元素名);//前面有start,操作完這個(gè)結點(diǎn)后切記要end,添加鏡像結束標簽。
6)關(guān)閉dom對象:handler.endDocument();
原理:通過(guò)result關(guān)聯(lián)到xml文檔,通過(guò)handler開(kāi)始一個(gè)標簽、設置標簽屬性、添加文本、結束一個(gè)標簽方法操作result從而改變xml文檔內容。
三:JDOM方法生成XML
步驟:創(chuàng )建根結點(diǎn),由根結點(diǎn)創(chuàng )建dom對象,然后從根結點(diǎn)開(kāi)始構造dom樹(shù),最后輸出dom對象到xml文檔即可。
1:生成根節點(diǎn):Element root=new Element(“節點(diǎn)名”);
2:設置根結點(diǎn)屬性:root.setAttribute(屬性名,屬性值);
3:把根作為參數創(chuàng )建dom對象:Document dom=new Document(root);
4:從根結點(diǎn)開(kāi)始構造dom樹(shù):
1)創(chuàng )建結點(diǎn):Element element=new Element("節點(diǎn)名");
2)設置結點(diǎn)屬性:element.setAttribute(屬性名,屬性值);
3)設置結點(diǎn)文本內容:element.setText(文本內容);
4)添加結點(diǎn)到父節點(diǎn)下:father.addContent(child);
5:dom樹(shù)構造完畢,進(jìn)行輸出:
1)創(chuàng )建XMLOutputer:XMLOutputer outputer=new XMLOutputer(format);//format參數可選,可以創(chuàng )建一個(gè)format對象設置輸出格式,比如換行、編碼格式等
2)通過(guò)outputer把dom對象輸出到xml文檔:outputer.output(dom,new FileOutputStream(xml_file));
四:DOM4j生成XML
步驟:
1:創(chuàng )建dom對象:Document dom=new Document();
2:創(chuàng )建根節點(diǎn):Element rooe=dom.addElement("根節點(diǎn)名");
3:為根結點(diǎn)設置屬性:element.setAttribute(屬性名,屬性值);
4:由根結點(diǎn)構建dom樹(shù):
1)創(chuàng )建子節點(diǎn):Element element=father.addElement("節點(diǎn)名");
2)設置結點(diǎn)屬性:element.setAttribute(屬性名,屬性值);
3)設置結點(diǎn)文本內容:element.setText(文本);
5:構建dom樹(shù)完畢,把dom對象輸出到xml文件:
1)創(chuàng )建XMLWriter:XMLWriter writer=new XMLWriter(new FileOutputStream(xml_file),format);//format參數可選,可以傳一個(gè)format對象指定輸出格式
2)設置輸出到文檔時(shí)是否轉義:writer.setEscapeText(false);//true轉義
3)通過(guò)writer把dom對象寫(xiě)到xml文檔中:wtiter.write(dom);
聯(lián)系客服