XML解析(Dom /DOM4J)
来源:互联网 发布:股票入门 知乎 编辑:程序博客网 时间:2024/05/19 05:05
XML : 可扩展标记语言,用来传输和存储数据。
DOM解析
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建dom解析工厂DocumentBuilder db = dbf.newDocumentBuilder();//获得具体的dom解析器
Document document = db.parse(new File("xml/books.xml")); // 解析xml文件 , 获得document 对象
实例:
/** * XML字符串流转对象 */public List<Books> parse(InputStream is) throws Exception {List<Books> listbook=new ArrayList<Books> ();DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建dom解析工厂 DocumentBuilder db = dbf.newDocumentBuilder();Document document = db.parse(new File("xml/books.xml")); // 解析xml文件 , 获得document 对象NodeList list = document.getElementsByTagName("book"); // 获得 book节点的集合for (int i = 0; i < list.getLength(); i++) {Books book = new Books();Node node = list.item(i); NodeList cNodeList = node.getChildNodes(); // 获得 当前book下的所有节点for (int j = 0; j < cNodeList.getLength(); j++) { // 遍历当前book下的所有节点Node cnode = cNodeList.item(j); if (cnode.getNodeType() == Node.ELEMENT_NODE) { // 为元素节点的时候String content = cnode.getFirstChild().getTextContent(); // 获取当前节点的文本内容if (cnode.getNodeName().equals("id")) {book.setId(Integer.parseInt(content));} else if (cnode.getNodeName().equals("name")) {book.setName(content);} else if (cnode.getNodeName().equals("price")) {book.setPrice(Double.parseDouble(content));}}}listbook.add(book);}return listbook;}@Override/** * 对象转xml字符串 */public String serialize(List<Books> books) throws Exception {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建dom解析工厂DocumentBuilder db = dbf.newDocumentBuilder();//获得具体的dom解析器Document doc=db.newDocument();Element rootElement = doc.createElement("books"); //创建books节点for(Books blist :books){Element bookElement = doc.createElement("book"); //创建book节点bookElement.setAttribute("id", blist.getId() + "");//创建属性节点Element idElement = doc.createElement("id");idElement.setTextContent(String.valueOf(blist.getId()));//转为字符串bookElement.appendChild(idElement);Element nameElement = doc.createElement("name"); //创建name节点nameElement.setTextContent(blist.getName());//设置name节点的文本内容bookElement.appendChild(nameElement);//把name节点添加到book节点中Element priceElement = doc.createElement("price"); priceElement.setTextContent(blist.getPrice()+"");bookElement.appendChild(priceElement);rootElement.appendChild(bookElement);}doc.appendChild(rootElement);TransformerFactory transFactory = TransformerFactory.newInstance();// 取得TransformerFactory实例Transformer transformer = transFactory.newTransformer(); // 从transFactory获取Transformer实例transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); // 设置输出采用的编码方式StringWriter writer = new StringWriter();Result result = new StreamResult(writer);// 表明目标结果为writerSource source = new DOMSource(doc); // 表明文档来源是doctransformer.transform(source, result);return writer.toString();}
DOM4J解析
DOM4J需要下载jar包---网站:https://dom4j.github.io/
实例:
/** * XML解析成java对象 */public List<Book> xml_java() throws ParserConfigurationException, SAXException, IOException {List<Book> booklist = new ArrayList<>();DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建dom解析工厂 DocumentBuilder db = dbf.newDocumentBuilder();Document document = db.parse(new File("xml/book.xml")); // 解析xml文件 , 获得document 对象NodeList list = document.getElementsByTagName("book"); // 获得 book节点的集合for (int i = 0; i < list.getLength(); i++) {Book book = new Book();Node node = list.item(i); NodeList cNodeList = node.getChildNodes(); // 获得 当前book下的所有节点for (int j = 0; j < cNodeList.getLength(); j++) { // 遍历当前book下的所有节点Node cnode = cNodeList.item(j); //if (cnode.getNodeType() == cnode.ELEMENT_NODE) { // 为元素节点的时候String content = cnode.getFirstChild().getTextContent(); // 获取当前节点的文本内容if (cnode.getNodeName().equals("id")) {book.setId(Integer.parseInt(content));} else if (cnode.getNodeName().equals("name")) {book.setName(content);} else if (cnode.getNodeName().equals("price")) {book.setPrice(Double.parseDouble(content));}}}booklist.add(book);}return booklist;}/** * java对象转XML文件 */public String java_xml(List<Book> book) throws ParserConfigurationException, TransformerException{DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建dom解析工厂DocumentBuilder db = dbf.newDocumentBuilder();//获得具体的dom解析器Document doc=db.newDocument();Element rootElement = doc.createElement("books"); //创建books节点for(Book blist :book){Element bookElement = doc.createElement("book"); //创建book节点bookElement.setAttribute("id", blist.getId() + "");//创建属性节点Element idElement = doc.createElement("id");idElement.setTextContent(String.valueOf(blist.getId()));//转为字符串bookElement.appendChild(idElement);Element nameElement = doc.createElement("name"); //创建name节点nameElement.setTextContent(blist.getName());//设置name节点的文本内容bookElement.appendChild(nameElement);//把name节点添加到book节点中Element priceElement = doc.createElement("price"); priceElement.setTextContent(blist.getPrice()+"");bookElement.appendChild(priceElement);rootElement.appendChild(bookElement);}doc.appendChild(rootElement);TransformerFactory transFactory = TransformerFactory.newInstance();// 取得TransformerFactory实例Transformer transformer = transFactory.newTransformer(); // 从transFactory获取Transformer实例transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); // 设置输出采用的编码方式StringWriter writer = new StringWriter();Result result = new StreamResult(writer);// 表明目标结果为writerSource source = new DOMSource(doc); // 表明文档来源是doctransformer.transform(source, result);return writer.toString();}
阅读全文
0 0
- XML解析(Dom /DOM4J)
- XML解析(DOM,SAX,dom4j)
- XML 解析(dom/sax, dom4j)
- 使用DOM 、DOM4J解析XML
- Dom4j解析Xml与Dom解析Xml
- 解析XML(SAX、DOM、PULL、dom4j)
- DOM、JDOM、DOM4J解析XML实例
- DOM、JDOM、DOM4J解析XML实例
- DOM、JDOM、DOM4J解析XML实例
- DOM、JDOM、DOM4J解析XML实例
- xml的解析DOM,SAX,DOM4J
- XML基础编程解析(DOM SAX Dom4J)
- 使用dom及dom4j进行xml解析
- XML解析(DOM SAX JDOM DOM4J)
- JAVA解析xml DOM SAX JDOM DOM4J
- xml文档解析 DOM和DOM4J分析
- XML解析-Dom4j的DOM解析方式更新XML
- xml、dtd、SAX解析、DOM解析、DOM4J解析学习
- [bzoj-1047][HAOI2007]理想的正方形 题解
- hbase
- 线程的使用及相关代码
- HttpClient的用法
- JavaWeb知识体系梳理和学习资料汇总
- XML解析(Dom /DOM4J)
- C++中两个类简单互相包含会形成死循环
- 毕业设计引发的一些想法
- 搭建git代码服务器教程
- hibernate Criteria
- centos部署svn服务器以及相关重要配置
- Android 系统EditText获取焦点并且设置相关信息
- Linux系统中运行.sh(Shell脚本)文件
- 项目一——电子通讯录