首页 > 其他 > 详细

jaxp对xml的增删改查

时间:2015-11-18 15:43:53      阅读:282      评论:0      收藏:0      [点我收藏+]

(1)首先我需要一个java SDK API 文档

有一个在线的java sdk 1.6 api文档,网址:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

 

(2)在javax.xml.parsers包,由包的名称可以知道这个就是xml解析的包,里面有四个类

DocumentBuilder和DocumentBuilderFactory两个是基于DOM模式解析

后两个类是基于SAX模式解析

                       技术分享

(3)新建一个包,利用上面的包解析xml

技术分享

例如xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?><persons>
    <person>
        <name>小明</name>
        <age>24</age>
    </person>
    <person>
        <name>小红</name>
        <age>23</age>
    <sex>female</sex></person>
    
</persons>

解析的java文件

package cn.yangying.jaxptest;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
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.w3c.dom.Text;
import org.xml.sax.SAXException;

/**
 * 便利xml文件获取name标签
 * @author yangying
 *
 */
public class TestJaxp {

    public static void main(String[] args) throws Exception {
        selectAll();
        addElement();
        
    }
    
    //添加节点
    private static void addElement() throws Exception {
        /*
         * 1.创建解析器工厂
         * 2.创建解析器
         * 3.获取xml文件
         * 
         * 4.创建<sex>标签
         * 5.创建文本节点
         * 6.文本节点付给<sex>节点子元素
         * 7.查询到person节点
         * 8.将sex节点付给person子元素
         * (发现xml文件没变化,因为我们只是改变了DOM内存的树形结构)
         * 
         * 9.会写到xml文件
         */
        
        //创建解析器工厂
        DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
        //创建解析器
        DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
        //获取xml文件
        Document document = documentBuilder.parse("src/1.xml");    
        
        Element sexElem = document.createElement("sex");
        Text sexText = document.createTextNode("female");
        sexElem.appendChild(sexText);
        
        NodeList personList = document.getElementsByTagName("person");
        for(int i=0; i< personList.getLength(); i++){
            personList.item(i).appendChild(sexElem);
        }
        
        TransformerFactory transformerfactory = TransformerFactory.newInstance();
        Transformer transformer = transformerfactory.newTransformer();
        transformer.transform(new DOMSource(document), new StreamResult("src/1.xml"));
        
    }
    
    //查找元素
    private static void selectAll() throws Exception {
        /*
         * 1.创建解析器器工厂
         * 2.创建解析器
         * 3.获取xml文件
         * 
         * 4.获取所以节点为name的标签
         * 5.遍历打印
         */
        //创建解析器工厂
        DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
        //创建解析器
        DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
        //获取xml文件
        Document document = documentBuilder.parse("src/1.xml");    
        //获取所有节点为name的标签
        NodeList list = document.getElementsByTagName("name");
        //便利打印
        for(int i=0; i<list.getLength(); i++){
            Node node = list.item(i);
            String s = node.getTextContent();
            System.out.println(s);
        }
    }

}

 

jaxp对xml的增删改查

原文:http://www.cnblogs.com/daisy-hust/p/4974319.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!