Java利用dom方式读取、创建xml详解及实例代码

软件编程 java 分类:[default] 更新日期: 2017-04-08
这篇文章主要介绍了Java 利用dom方式读取、创建xml的相关资料,需要的朋友可以参考下

Java 利用dom方式读取、创建xml详解

1.创建一个接口

XmlInterface.Java

public interface XmlInterface
 {
 
  /** 
  *
 建立XML文档 
  *
 @param fileName 文件全路径名称 
  */
  public void createXml(String
 fileName); 
  /** 
  *
 解析XML文档 
  *
 @param fileName 文件全路径名称 
  */
  public void parserXml(String
 fileName); 
}

接口实现

XmlImpl.java

package com.test.xml;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.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.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
public class XmlImpl implements XmlInterface{
 private Document
 document;
 
 public void init()
 {
  try {
   DocumentBuilderFactory
 factory = DocumentBuilderFactory
     .newInstance();
   DocumentBuilder
 builder = factory.newDocumentBuilder();
   this.document
 = builder.newDocument();
  } catch (ParserConfigurationException
 e) {
   System.out.println(e.getMessage());
  }
 }
 
 public void createXml(String
 fileName) {
  Element
 root = this.document.createElement("scores"); 
  this.document.appendChild(root); 
  Element
 employee = this.document.createElement("employee"); 
  Element
 name = this.document.createElement("name"); 
  name.appendChild(this.document.createTextNode("wangchenyang")); 
  employee.appendChild(name); 
  Element
 sex = this.document.createElement("sex"); 
  sex.appendChild(this.document.createTextNode("m")); 
  employee.appendChild(sex); 
  Element
 age = this.document.createElement("age"); 
  age.appendChild(this.document.createTextNode("26")); 
  employee.appendChild(age); 
  root.appendChild(employee); 
  TransformerFactory
 tf = TransformerFactory.newInstance();
  try {
   Transformer
 transformer = tf.newTransformer();
   DOMSource
 source = new DOMSource(document);
   transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
   transformer.setOutputProperty(OutputKeys.INDENT, "yes");
   PrintWriter
 pw = new PrintWriter(new FileOutputStream(fileName));
   StreamResult
 result = new StreamResult(pw);
   transformer.transform(source,
 result);
   System.out.println("生成XML文件成功!");
  } 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) {
   System.out.println(e.getMessage());
  }
 }
 
 public void parserXml(String
 fileName) {
  try {
   DocumentBuilderFactory
 dbf = DocumentBuilderFactory.newInstance();
   DocumentBuilder
 db = dbf.newDocumentBuilder();
   Document
 document = db.parse(fileName);
    
   NodeList
 employees = document.getChildNodes();
   for (int i
 = 0;
 i < employees.getLength(); i++) {
    Node
 employee = employees.item(i);
    NodeList
 employeeInfo = employee.getChildNodes();
    for (int j
 = 0;
 j < employeeInfo.getLength(); j++) {
     Node
 node = employeeInfo.item(j);
     NodeList
 employeeMeta = node.getChildNodes();
     for (int k
 = 0;
 k < employeeMeta.getLength(); k++) {
      System.out.println(employeeMeta.item(k).getNodeName()
        + ":" +
 employeeMeta.item(k).getTextContent());
     }
    }
   }
   System.out.println("解析完毕");
  } catch (FileNotFoundException
 e) {
   System.out.println(e.getMessage());
  } catch (ParserConfigurationException
 e) {
   System.out.println(e.getMessage());
  } catch (SAXException
 e) {
   System.out.println(e.getMessage());
  } catch (IOException
 e) {
   System.out.println(e.getMessage());
  }
 }
}

测试

public class Main
 {
 
 public static void main(String
 args[]){
  XmlImpl
 dd=new XmlImpl();
  String
 str="D:/grade.xml";
  dd.init();
  dd.createXml(str); //创建xml
  dd.parserXml(str); //读取xml
 }
}

结果

生成xml

<?xml version="1.0" encoding="GB2312"?>
<scores>
<employee>
<name>wangchenyang</name>
<sex>m</sex>
<age>26</age>
</employee>
</scores>

读取xml

生成XML文件成功!
#text:
 
name:wangchenyang
#text:
 
sex:m
#text:
 
age:26
#text:
 
解析完毕

感谢阅读,希望能帮到大家,谢谢大家对本站的支持!


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • Yii2rbac权限控制之rule教程详解
    Yii2rbac权限控制之rule教程详解
    这篇文章主要介绍了Yii2 rbac权限控制之rule教程详解的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下在我们之前Yii2搭建后台并实现rbac权限控制完整实例教程中,不知道你曾经疑惑过没有一个问题,rule表是做什么的,为什么在整个过程中我们都没有涉及到这张表? 相信我不说,部分人也都会去尝试,或百度或google,到头来也会竹篮打水,这部 ...
  • 详解表单验证正则表达式实例(推荐)
    这篇文章主要介绍了详解表单验证正则表达式实例推荐的相关资料,非常不错,具有参考借鉴价值,特此分享到平台供大家参考验证:!reg.test(value) 邮箱: 代码如下:reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/i; 不包含中文: 代码如下:r ...
  • 将xml文件作为一个小的数据库,进行学生的增删改查的简单实例
    下面小编就为大家带来一篇将xml文件作为一个小的数据库,进行学生的增删改查的简单实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧1.xml文件: <?xml version="1.0" encoding="UTF-8"?><Students> <stude ...
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    这篇文章主要介绍了利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug四的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下我的个人博客站在使用百度富文本编辑器UEditor修改文章时,遇到了一些问题,(不知是bug,还是我没有配置好).但总算找到了解决方法,在此记录下来. 小站首页文章列表显示为(显示去除HTM ...
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之打造清新分页Helper三
    利用ASP.NETMVC+Bootstrap搭建个人博客之打造清新分页Helper三
    这篇文章主要介绍了利用ASP.NET MVC+Bootstrap搭建个人博客之打造清新分页Helper三的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下0. 没有找到一款中意的分页插件,又不想使用现成的(丑到爆),所以自己动手造一个吧 先看下效果(其实也不咋滴...): 我的小站地址:我的Bootstrap小站; PS:(问博客园:为什么老是删我 ...
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之praise.js点赞特效插件(二)
    这篇文章主要介绍了利用ASP.NET和MVC+Bootstrap搭建个人博客之praise.js点赞特效插件二的相关资料,需要的朋友可以参考下在上篇文章给大家介绍了利用ASP.NET MVC和Bootstrap快速搭建响应式个人博客站(一).接下来给大家介绍如果做个点赞插件,一起通过本文学习吧! 1. 为啥要做这个点赞插件?    praise.js是一款小 ...
猜你喜欢