关于XML的读取与写入数据

 

package com.tem;

import java.io.IOException;

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.NodeList;
import org.xml.sax.SAXException;

/**
 * XML的读取
 *
 * @author hjx
 *
 */
public class XmlDemo1 {

 // 读取XML文档数据的方法
 public static void readXml() {
  try {
   // 创建documentBuild对象
   DocumentBuilder documentBuild = DocumentBuilderFactory
     .newInstance().newDocumentBuilder();
   // 定义XML文档的路径
   String path = XmlDemo1.class.getResource("/").getPath()
     + "com/tem/MyXml.xml";
   // 创建document对象
   try {
    Document doc = documentBuild.parse(path); // 此时,document对象已经和XML文档建立了关联,可能通过document对象对XML文档进行添加、删除、修改内容的操作。
    // 获取users节点下的信息
    NodeList nodelist = doc.getElementsByTagName("user");

    for (int i = 0; i < nodelist.getLength(); i++) {

     Element el = (Element) nodelist.item(i);

     System.out.println("用户名称: " + el.getAttribute("name")
       + "用户密码: " + el.getAttribute("pwd"));

    }

   } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

  } catch (ParserConfigurationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 // 向XML文档中写入数据

 public static void writeXML(String name, String pwd) {
  // 构造一个DocuemtnBuilder对象
  try {
   DocumentBuilder documentBuilder = DocumentBuilderFactory
     .newInstance().newDocumentBuilder();

   // 创建一个Document对象
   Document doc = documentBuilder.newDocument();
   // 定义XML文档的路径
   String path = XmlDemo1.class.getResource("/").getPath()
     + "com/tem/MyXml.xml";

   // 建立Document对象与XML文档关联
   try {
    doc = documentBuilder.parse(path);

    // 指定追加节点的父节点
    NodeList nodelist = doc.getElementsByTagName("users");
    Element eltop = (Element) nodelist.item(0);

    // 定义追加的节点名称及其信息
    Element elchild = doc.createElement("user");
    elchild.setAttribute("name", name);
    elchild.setAttribute("pwd", pwd);

    // 把子节点添加到父节点下
    eltop.appendChild(elchild);

    // 保存文档

    // 构造一个TransformerFactory 对象
    TransformerFactory tf = TransformerFactory.newInstance();

    // 构造一个Transformer对象
    try {
     Transformer trans = tf.newTransformer();

     // 设置Transformer的属性
     trans.setOutputProperty(OutputKeys.INDENT, "yes");
     trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

     // 定义XML输出源文档对象
     DOMSource dosource = new DOMSource(doc);

     // 定义输出路径及名称
     StreamResult res = new StreamResult(path);

     // 输出XML文档

     try {
      trans.transform(dosource, res);

      System.out.println("输出结束");

     } catch (TransformerException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }

    } catch (TransformerConfigurationException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

   } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

  } catch (ParserConfigurationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public static void main(String[] args) {

  readXml();
  writeXML("zhangsan", "123456789");

 }

}

 

//我的XML的内容

MyXml.xml

<?xml version="1.0" encoding="UTF-8"?>
<sys>

<users>

<user  name="demo1" pwd="123456" />
<user  name="hjx" pwd="12346" />

</users>


</sys>

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值