入门:使用Dom对xml进行curd操作
来源:互联网 发布:芳纶纸淘宝 编辑:程序博客网 时间:2024/05/29 13:23
注释:curd操作:创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
1.XML简单介绍:
xml:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
简单来说,就是如下:
2.XMLcurd操作:
1.通过普通Java类创建xml:
package org.utils;import java.io.FileOutputStream;import java.io.PrintWriter;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;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;public class CreateXml { private Document doc; private String filename; public CreateXml(String filename) { super(); this.filename = filename; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = null; try { docbuilder = factory.newDocumentBuilder(); //获取解析器 } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } doc = docbuilder.newDocument(); } public void create(){ Element root = doc.createElement("books");//创建根节点 doc.appendChild(root); //创建第一个节点 Element book1 = doc.createElement("book");//此的根节点 Element name1 = doc.createElement("name");//此节点的第一个子节点 Element parse1 = doc.createElement("parse");//此节点的第二个子节点 book1.setAttribute("id", "1");//为book1结点设置属性Id name1.appendChild(doc.createTextNode("Three Body"));//在name1的标签体设置内容 parse1.appendChild(doc.createTextNode("23.2"));//在parse1的标签体设置内容 book1.appendChild(name1);//将name1追加在book1里 book1.appendChild(parse1);//如上 //第一本书创建完成 root.appendChild(book1); TransformerFactory tf = TransformerFactory.newInstance(); try { Transformer transform = tf.newTransformer(); DOMSource source = new DOMSource(doc); transform.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置文档编码 transform.setOutputProperty(OutputKeys.INDENT, "yes");//设置缩进 PrintWriter pw = new PrintWriter(new FileOutputStream(filename)); StreamResult result = new StreamResult(pw);//作为转换后结果保存 transform.transform(source, result);//将DOM源转换成xml输出 System.out.println("生成xml文件"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
2.对Xml进行一般操作:
package org.utils;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.bean.Book;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class URDXml { private Document doc; private String filename; public URDXml(String filename) { super(); this.filename = filename; DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = null; try { docBuilder = docFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { doc = docBuilder.parse(new File(filename)); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void read(){ List<Book> list = new ArrayList<Book>(); Element root = doc.getDocumentElement(); NodeList books = root.getElementsByTagName("book"); for(int i = 0;i < books.getLength();i++){ Node book = books.item(i); Element ele = (Element) books.item(i); if(book.getNodeType()==Element.ELEMENT_NODE){ Book bookObj = new Book(); NodeList bookAttr = book.getChildNodes(); bookObj.setId(Integer.parseInt(((Element)book).getAttribute("id"))); for(int j = 0;j < bookAttr.getLength();j++){ Node attr = bookAttr.item(j); if(attr.getNodeType()==Element.ELEMENT_NODE){ if("name".equals(attr.getNodeName())){ bookObj.setName(attr.getFirstChild().getNodeValue()); } else if("parse".equals(attr.getNodeName())){ bookObj.setPrice(Float.parseFloat(attr.getFirstChild().getNodeValue())); } } } list.add(bookObj); } } Iterator<Book> it = list.iterator(); while(it.hasNext()){ Book book = it.next(); System.out.println(book.toString()); } } public void update(int id,Book newBook){ Element root = doc.getDocumentElement(); NodeList books = root.getElementsByTagName("book"); for(int i = 0;i < books.getLength();i++){ Node book = books.item(i); int id2 = Integer.parseInt(((Element)book).getAttribute("id")); if(id == id2){ NodeList bookAttr = book.getChildNodes(); for(int j = 0;j < bookAttr.getLength();j++){ Node attr = bookAttr.item(j); if(attr.getNodeType()==Element.ELEMENT_NODE){ if("name".equals(attr.getNodeName())){ attr.getFirstChild().setNodeValue(newBook.getName()); } else if("parse".equals(attr.getNodeName())){ attr.getFirstChild().setNodeValue(newBook.getPrice()+""); } } } System.out.println("修改完成"); } } TransformerFactory tf = TransformerFactory.newInstance(); try { Transformer transform = tf.newTransformer(); DOMSource source = new DOMSource(doc); transform.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置文档编码 transform.setOutputProperty(OutputKeys.INDENT, "yes"); PrintWriter pw = new PrintWriter(new FileOutputStream(filename)); StreamResult result = new StreamResult(pw);//作为转换后结果保存 transform.transform(source, result);//将DOM源转换成xml输出 System.out.println("更新成功"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
3.这是java最简单操作的方法,同时也是最复杂最浪费时间的一种,下个文章我将采用dom4j来对xml进行操作
0 0
- 入门:使用Dom对xml进行curd操作
- 使用java 对xml文件进行DOM操作
- 使用JAVA对XML文件进行DOM操作
- 使用hibernate进行CURD操作
- 使用Dom对xml进行读写
- 使用DOM方式对XML进行CRUD
- 使用C#对Excel进行读写操作(NPOI)以及使用EF对Mysql进行CURD
- OLEDB对EXCEL进行CURD操作
- 2.对memcached进行curd操作
- jsp使用DOM对xml文件进行操作的web小项目
- java 使用DOM对XML文档进行增删改查操作
- 【XML解析】使用Jaxp对XML进行DOM解析
- dom解析方式对xml文档进行操作
- 使用DOM技术来对XML文档进行解析范例
- 使用JAXP对xml文档进行Dom解析
- 使用JAXP对xml文档进行Dom解析
- 使用JAXP对XML文档进行DOM解析
- 使用jaxp对XML文件进行dom解析
- 5-38 数列求和-加强版 (20分)
- 批量删除
- 2016秋招阿里内推面试经历
- Zephyr OS 基础篇: 搭建开发环境 hello-world
- C++11之unique_lock学习总结和代码实例
- 入门:使用Dom对xml进行curd操作
- 使用Apache DBCP连接池重构DBUtility
- WPF瀑布流实现
- 每次用eclipse打开Android的layout下的一个xml时会出现Problem Occurred
- JDBC-实例1
- tjut 4681
- Basic Math
- UPnP中Control Point的基本流程
- iOS9开始的新特性