Java以DOM方式解析生成xml文件或字符串
来源:互联网 发布:淘宝扣分12分会怎么样 编辑:程序博客网 时间:2024/04/30 10:46
测试: kagula
测试日期: 2016-7-18
测试环境: jdk 1.8.x
book.xml
<?xml version="1.0" encoding="ISO-8859-1"?><bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <year>2003</year> <price>49.99</price> </book> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book></bookstore>
java源文件
package testXML;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.PrintWriter;import java.io.StringReader;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.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;import org.xml.sax.InputSource;//http://www.jb51.net/article/62995.htmpublic class testXML {public static void domFromFile(){try{File xmlFile = new File("d:/book.xml");DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = builderFactory.newDocumentBuilder();Document doc = builder.parse(xmlFile);doc.getDocumentElement().normalize();System.out.println("Root element: "+doc.getDocumentElement().getNodeName());NodeList nList = doc.getElementsByTagName("book");for(int i = 0 ; i<nList.getLength();i++){ Node node = nList.item(i); System.out.println("Node name: "+ node.getNodeName()); Element ele = (Element)node; System.out.println("----------------------------"); if(node.getNodeType() == Element.ELEMENT_NODE){ System.out.println("book category: "+ ele.getAttribute("category")); System.out.println("title name: "+ ele.getElementsByTagName("title").item(0).getTextContent()); System.out.println("author name: "+ele.getElementsByTagName("author").item(0).getTextContent()); System.out.println("year :" +ele.getElementsByTagName("year").item(0).getTextContent()); System.out.println("price : " +ele.getElementsByTagName("price").item(0).getTextContent()); System.out.println("-------------------------"); }}}catch(Exception ex){ex.printStackTrace();}}public static void domFromString(){String strXML = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><bookstore><book category=\"cooking\"> <title lang=\"en\">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book></bookstore>";DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); StringReader sr = new StringReader(strXML); InputSource is = new InputSource(sr); Document doc = builder.parse(is); doc.getDocumentElement().normalize();System.out.println("Root element: "+doc.getDocumentElement().getNodeName());NodeList nList = doc.getElementsByTagName("book");for(int i = 0 ; i<nList.getLength();i++){ Node node = nList.item(i); System.out.println("Node name: "+ node.getNodeName()); Element ele = (Element)node; System.out.println("----------------------------"); if(node.getNodeType() == Element.ELEMENT_NODE){ System.out.println("book category: "+ ele.getAttribute("category")); System.out.println("title name: "+ ele.getElementsByTagName("title").item(0).getTextContent()); System.out.println("author name: "+ele.getElementsByTagName("author").item(0).getTextContent()); System.out.println("year :" +ele.getElementsByTagName("year").item(0).getTextContent()); System.out.println("price : " +ele.getElementsByTagName("price").item(0).getTextContent()); System.out.println("-------------------------"); }}}catch (ParserConfigurationException e) { e.printStackTrace(); } catch(Exception ex) { ex.printStackTrace();}}public static void dom2file(){DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();try {DocumentBuilder db = dbf.newDocumentBuilder();Document doc=db.newDocument();Element eleBookstore=doc.createElement("bookstore");Element eleBook1=doc.createElement("book");Element eleBook2=doc.createElement("book");Attr attr1=doc.createAttribute("颜色");Attr attr2=doc.createAttribute("颜色");attr1.setNodeValue("天蓝");attr2.setNodeValue("橘色");Element eleName1=doc.createElement("name");Text nodeName1=doc.createTextNode("龙大哥");Element eleName2=doc.createElement("name");Text nodeName2=doc.createTextNode("龙大爷");Element eleGenre1=doc.createElement("genre");Text nodeSF=doc.createTextNode("科幻");Element eleGenre2=doc.createElement("genre");Text nodeRF=doc.createTextNode("言情"); doc.appendChild(eleBookstore);eleBookstore.appendChild(eleBook1);eleBook1.appendChild(eleName1);eleBook1.setAttributeNode(attr1);eleName1.appendChild(nodeName1);eleBook1.appendChild(eleGenre1);eleGenre1.appendChild(nodeSF);eleBookstore.appendChild(eleBook2);eleBook2.appendChild(eleName2);eleBook2.setAttributeNode(attr2);eleName2.appendChild(nodeName2);eleBook2.appendChild(eleGenre2);eleGenre2.appendChild(nodeRF);//doc2file(doc);//System.out.println(write2string(doc));} catch (Exception e) {e.printStackTrace();}}public static void doc2file(Document doc){try {TransformerFactory tf = TransformerFactory.newInstance();Transformer transformer = tf.newTransformer();DOMSource source = new DOMSource(doc);transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");transformer.setOutputProperty(OutputKeys.INDENT, "yes");PrintWriter pw = new PrintWriter(new FileOutputStream("d://book2.xml"));StreamResult result = new StreamResult(pw);transformer.transform(source, result);} catch (TransformerConfigurationException e) { System.out.println(e.getMessage()); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } catch (FileNotFoundException e) { System.out.println(e.getMessage());} catch (TransformerException e) {e.printStackTrace();}}public static String doc2string(Document doc){TransformerFactory tf = TransformerFactory.newInstance();Transformer transformer = null;ByteArrayOutputStream outStream = new ByteArrayOutputStream();try{transformer = tf.newTransformer();transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");transformer.setOutputProperty(OutputKeys.INDENT, "yes");transformer.transform(new DOMSource(doc),new StreamResult(outStream));}catch(Exception e){e.printStackTrace();}return outStream.toString(); }public static void main(String[] args){System.out.println("测试以DOM方式操作xml文件或字符串");//domFromFile();//测试从磁盘文件中读取domFromString();//测试从字符串中读取dom2file();//测试写入文件或字符串}}
0 0
- Java以DOM方式解析生成xml文件或字符串
- java 以dom方式解析xml
- Java之DOM方式解析XML文件
- Java 应用DOM方式解析XML文件
- Java中的xml文件dom方式解析
- java解析XML文件(DOM方式)
- java中以DOM方式来对xml文件进行解析操作
- DOM方式生成XML文件
- Dom解析、生成XML文件
- 以 DOM 方式解析XML文档
- DOM方式解析XML文件
- java与xml学习[DOM方式解析XML文件]
- XML学习04-Java中DOM方式解析XML文件
- java 解析dom 树方式来解析XML文件
- JAVA 生成解析XML-DOM
- JAVA XML 解析 DOM 方式
- 解析与生成XML文件或字符串 dom4j工具包
- Java之DOM方式生成XML文件(学习笔记)
- EventBus 学习笔记
- 深入理解HashMap(及hash函数的真正巧妙之处)
- GitHub 优秀的 Android 开源项目
- 表的查询(二)
- spring boot 使用FreeMarker模板
- Java以DOM方式解析生成xml文件或字符串
- 请问腾迅前端高级开发工程师
- android的自定义toolbar
- pool(一)——入门
- dot实现HuffmanTree动态可视化
- dubbo注册服务IP解析异常及IP解析源码分析
- 【BOM操作】JavaScript中的event对象之总结
- iOS 通知中心传值
- POJ 1084(DLX重复覆盖)