您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

java对XML文件的解析、节点的增加、删除操作总结

2024/3/6 0:27:32发布13次查看
1、java代码:
主要采用dom来进行操作
package test; import java.io.ioexception; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import javax.xml.parsers.parserconfigurationexception; import javax.xml.transform.transformer; import javax.xml.transform.transformerconfigurationexception; import javax.xml.transform.transformerexception; import javax.xml.transform.transformerfactory; import javax.xml.transform.dom.domsource; import javax.xml.transform.stream.streamresult; import org.w3c.dom.document; import org.w3c.dom.element; import org.w3c.dom.nodelist; import org.w3c.dom.text; import org.xml.sax.saxexception; public class xmloprate { document doc; documentbuilderfactory factory = documentbuilderfactory.newinstance(); documentbuilder builder; nodelist imags; string path; public nodelist getimags() { return imags; } public void setimags(nodelist imags) { this.imags = imags; } /** * 构造方法 * @param path:xml文件的路径 * @param nodes:要解析的xml节点名称 */ public xmloprate(string path) { super(); this.path = path; system.out.println(system.getproperty("user.dir")); } /** * 解析xml * @param path */ public void readxml(){ try { builder = factory.newdocumentbuilder(); document doc=builder.parse(path); doc.normalize(); nodelist imags =doc.getelementsbytagname("imags"); this.setimags(imags); for (int i=0;i<imags.getlength();i++){ element link=(element) imags.item(i); system.out.print("title: "); system.out.println(link.getelementsbytagname("title").item(0).getfirstchild().getnodevalue()); system.out.print("url: "); system.out.println(link.getelementsbytagname("url").item(0).getfirstchild().getnodevalue()); system.out.print("imgsrc: "); system.out.println(link.getelementsbytagname("imgsrc").item(0).getfirstchild().getnodevalue()); system.out.println(); } }catch (parserconfigurationexception e) { e.printstacktrace(); } catch (saxexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } } /** * addcode * @param path */ public void addxmlcode(string imgsrc,string title,string url){ try { builder = factory.newdocumentbuilder(); document doc=builder.parse(path); doc.normalize(); text textseg; element imag=doc.createelement("imags"); element linkimgsrc=doc.createelement("imgsrc"); textseg=doc.createtextnode(imgsrc); linkimgsrc.appendchild(textseg); imag.appendchild(linkimgsrc); element linktitle=doc.createelement("title"); textseg=doc.createtextnode(title); linktitle.appendchild(textseg); imag.appendchild(linktitle); element linkurl=doc.createelement("url"); textseg=doc.createtextnode(url); linkurl.appendchild(textseg); imag.appendchild(linkurl); doc.getdocumentelement().appendchild(imag); transformerfactory tfactory =transformerfactory.newinstance(); transformer transformer; transformer = tfactory.newtransformer(); domsource source = new domsource(doc); streamresult result = new streamresult(new java.io.file(path)); transformer.transform(source, result); }catch(exception e){ } } /** * delete xml code * @param path */ public void delxmlcode(){ try { builder = factory.newdocumentbuilder(); doc=builder.parse(path); doc.normalize(); nodelist imags =doc.getelementsbytagname("imags"); element elink=(element) imags.item(0); elink.removechild(elink.getelementsbytagname("imgsrc").item(0)); elink.removechild(elink.getelementsbytagname("title").item(0)); elink.removechild(elink.getelementsbytagname("url").item(0)); doc.getfirstchild().removechild(elink); transformerfactory tfactory =transformerfactory.newinstance(); transformer transformer = tfactory.newtransformer(); domsource source = new domsource(doc); streamresult result = new streamresult(new java.io.file(path)); transformer.transform(source, result); } catch (parserconfigurationexception e) { e.printstacktrace(); } catch (saxexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } catch (transformerconfigurationexception e) { e.printstacktrace(); } catch (transformerexception e) { e.printstacktrace(); } } }
2、xml部分
<?xml version="1.0" encoding="utf-8" ?> <root> <imags> <imgsrc>images/ad-01.jpg</imgsrc> <title>胡志明市</title> <url>http://torchrelay.beijing2008.cn/cn/journey/hochiminhcity/</url> </imags> <imags> <imgsrc>images/ad-02.jpg</imgsrc> <title>香港2</title> <url>http://torchrelay.beijing2008.cn/cn/journey/hongkong/</url> </imags> </root>
3、总结:
看对xml操作的三个方法(读、写、删),他们的初始化语句都相同:
builder = factory.newdocumentbuilder(); document doc=builder.parse(path); doc.normalize();
开始我打算把这部分相同的部分拿出来写在构造方法中,但是在测试中发现,这样总是会报空指针的错误(搞了我好久);
而只是把
builder = factory.newdocumentbuilder();
放到builder的初始化语句中的时候,读没问题,但是当写或者删的时候也会报错;
所以就写成现在这样了,感觉有点乱乱的,但也没想到什么好的方法,就先贴到这里了,以后可能会用得着
更多java对xml文件的解析、节点的增加、删除操作总结。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product