既然能在代码中解析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);