既然能在代碼中解析XML文檔獲取數據,固然也能經過代碼動態生成XML文檔了。html
與解析XML同樣,生成XML文檔也是用到了那4種方法。app
一:DOM方法生成XMLdom
步驟:ui
1:建立DocumentBuilder:DocumentBuilder builder=new DocumentBuilder();編碼
2:建立dom對象:Document dom=builder.newDocument();orm
3:建立dom中元素:Element element=dom.createElement("元素名");xml
4:向元素添加子節點:element.appendChild(childElement);(dom樹就是經過不停appendChild造成的)htm
5:向元素設置屬性:element.setAttribute("屬性名","屬性值");對象
6:向元素添加文本內容:element.setTextContent("標籤間內容");blog
7:把根元素添加至dom中:dom.appendChild(rootElement);(因爲子節點都是添加到根結點下的,因此把根結點添加到dom就至關於把整棵標籤樹添加進dom了)
8:把dom對象導出到xml文件:
1)建立轉換器工廠:TransformerFactory factory=TransformerFactory.newInstance();
2)由工廠建立轉換器實例:Transformer transformer=factory.newTransformer();
3)設置轉換格式:transformer.setOutputProperty(屬性,屬性值);//設置輸出到文檔時的格式,好比:換行等
4)由轉換器把dom資源轉換到結果輸出流,而結果輸出流鏈接到一個xml文件:transformer.transform(new DOMSourse(dom),new StreamResult(xml_file));
二:SAX方法操做XML
步驟:
1:建立SAX轉換器工廠:SAXTransformerFactory factory=SAXTransformerFactory.newInstance();
2:建立轉換handler:TransformerHandler handler=factory.newTransformerHandler();
3:由handler建立轉換器:Transformer transformer=handler.getTransformer();
4:設置轉換格式:transformer.setOutputProperty(屬性,屬性值);//設置輸出到文檔時的格式,好比:換行等
5:建立Result鏈接到xml文件:Result res=new StreamResult(new FileOutputStream(xml_file));
6:關聯result到handler:handler.setResult(res);
7:利用handler操做xml文件:
1)打開dom對象:handler.startDocument();
2)建立元素:handler.startElement(uri,命名空間,元素名,屬性列表);//沒有則填null
3)建立子結點:handler.startElement(uri,命名空間,子元素名,屬性列表);//在一個start與end的元素之間添加的結點就是它的子節點
4)爲結點添加屬性:上面start的元素名 element.setAttribute("","","屬性名","屬性值");
5)爲結點添加文本內容:在一個element的start與end之間,handler.characters(byte[],start,length);//byte就是文本內容,後面能夠進行截取
5)鏡像結束元素:hanlder.endElement("","",元素名);//前面有start,操做完這個結點後切記要end,添加鏡像結束標籤。
6)關閉dom對象:handler.endDocument();
原理:經過result關聯到xml文檔,經過handler開始一個標籤、設置標籤屬性、添加文本、結束一個標籤方法操做result從而改變xml文檔內容。
三:JDOM方法生成XML
步驟:建立根結點,由根結點建立dom對象,而後從根結點開始構造dom樹,最後輸出dom對象到xml文檔便可。
1:生成根節點:Element root=new Element(「節點名」);
2:設置根結點屬性:root.setAttribute(屬性名,屬性值);
3:把根做爲參數建立dom對象:Document dom=new Document(root);
4:從根結點開始構造dom樹:
1)建立結點:Element element=new Element("節點名");
2)設置結點屬性:element.setAttribute(屬性名,屬性值);
3)設置結點文本內容:element.setText(文本內容);
4)添加結點到父節點下:father.addContent(child);
5:dom樹構造完畢,進行輸出:
1)建立XMLOutputer:XMLOutputer outputer=new XMLOutputer(format);//format參數可選,能夠建立一個format對象設置輸出格式,好比換行、編碼格式等
2)經過outputer把dom對象輸出到xml文檔:outputer.output(dom,new FileOutputStream(xml_file));
四:DOM4j生成XML
步驟:
1:建立dom對象:Document dom=new Document();
2:建立根節點:Element rooe=dom.addElement("根節點名");
3:爲根結點設置屬性:element.setAttribute(屬性名,屬性值);
4:由根結點構建dom樹:
1)建立子節點:Element element=father.addElement("節點名");
2)設置結點屬性:element.setAttribute(屬性名,屬性值);
3)設置結點文本內容:element.setText(文本);
5:構建dom樹完畢,把dom對象輸出到xml文件:
1)建立XMLWriter:XMLWriter writer=new XMLWriter(new FileOutputStream(xml_file),format);//format參數可選,能夠傳一個format對象指定輸出格式
2)設置輸出到文檔時是否轉義:writer.setEscapeText(false);//true轉義
3)經過writer把dom對象寫到xml文檔中:wtiter.write(dom);