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

互联网 17-1-11
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>
builder = factory.newDocumentBuilder();   Document doc=builder.parse(path);   doc.normalize();

开始我打算把这部分相同的部分拿出来写在构造方法中,但是在测试中发现,这样总是会报空指针的错误(搞了我好久); 而只是把

builder = factory.newDocumentBuilder();

放到builder的初始化语句中的时候,读没问题,但是当写或者删的时候也会报错; 所以就写成现在这样了,感觉有点乱乱的,但也没想到什么好的方法,就先贴到这里了,以后可能会用得着

更多java对XML文件的解析、节点的增加、删除操作总结相关文章请关注PHP中文网!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: java XML操作
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java生成XML的方法

相关资讯