JAVA 操作xml的方法

DOM4J解析XML文件

package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class Dom4jTest {

    /**
     * 通过dom4j解析xml文件 2015-10-28 Joy
     * 
     */
    public void parserXML() {
        // 创建DOM4J中的saxReader对象
        SAXReader saxReader = new SAXReader();
        try {
            // 利用read方法加载book.xml文件,同时获取document对象,并且利用字符转换流设置编码为utf-8
            File file = new File("src/source/book.xml");
            Document document = saxReader.read(new InputStreamReader(
                    new FileInputStream(file), "utf-8"));
            // 通过document对象的getRootElement()方法获取到根节点
            Element rootElement = document.getRootElement();
            // 获取迭代器
            Iterator it = rootElement.elementIterator();
            // 循环迭代器
            while (it.hasNext()) {
                // 迭代下一个节点
                Element bookElement = (Element) it.next();
                // 输出节点的名字
                System.out.print(bookElement.getName());
                // 获取节点的属性集合
                List<Attribute> attrList = bookElement.attributes();
                // 输出节点的属性名和属性值
                for (Attribute attr : attrList) {
                    System.out.println(attr.getName() + ":" + attr.getValue());
                }
                // 通过属性名去获取属性值
                System.out.println(bookElement.attribute("id").getValue()
                        + "\n" + "\n\n");
                // 获取子节点
                Iterator its = bookElement.elementIterator();
                while (its.hasNext()) {
                    Element element = (Element) its.next();
                    System.out.println(element.getName() + ":"
                            + element.getText());
                }
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 通过dom4j创建xml文件 2015-10-28 Joy
     * 
     */
    public void createXML() {
        //创建document对象,代表整个xml文档
        Document document = DocumentHelper.createDocument();
        //创建跟节点
        Element element = document.addElement("root");
        //为跟节点设置属性以及属性值
        element.addAttribute("version", "1.0");
        //创建根节点的孩子
        Element child1 = element.addElement("child1");
        //给子节点设置text值
        child1.setText("<第一个熊孩子>");
        child1.addAttribute("name", "1");

        Element child2 = element.addElement("child1");
        child2.setText("<第二个熊孩子>");
        child2.addAttribute("name", "2");


        //文件名、文件位置
        File file = new File("src/source/bookdom4j.xml");
        //格式化
        OutputFormat format = OutputFormat.createPrettyPrint();
        //设置xml文件的编码方式
        format.setEncoding("GBK");
        try {
            //写出document
            XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
            //对文档进行转义,默然情况下是true表示转义
            writer.setEscapeText(false);
            writer.write(document);
            writer.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        Dom4jTest test = new Dom4jTest();
        test.createXML();
    }
}

dom解析xml文件

package test;

import java.io.File;
import java.io.FileInputStream;
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class DomTest {

    /**
     * 解析xml 2015-10-27 Joy
     * 
     */
    public void parserXML() {
        // 创建documentBuilderFactory对象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        // 利用documentBuilderFactory创建documentBuilder对象
        DocumentBuilder builder;
        try {
            builder = factory.newDocumentBuilder();
            // 通过builder对象的parse方法加载文件并且创建document对象
            Document document = builder.parse(new FileInputStream(
                    "src/source/book.xml"));
            // 获取book节点,返回nodelist集合
            NodeList nodeList = document.getElementsByTagName("book");
            // 循环nodelist集合
            for (int i = 0; i < nodeList.getLength(); i++) {
                // 获取node节点
                Node node = nodeList.item(i);
                // 获取node节点的属性
                NamedNodeMap attrs = node.getAttributes();
                // 循环输出属性名和属性值
                for (int j = 0; j < attrs.getLength(); j++) {
                    Node map = attrs.item(j);
                    System.out.println(map.getNodeName() + ":"
                            + map.getNodeValue());
                }

                // 获取子节点
                NodeList chilList = node.getChildNodes();
                for (int j = 0; j < chilList.getLength(); j++) {
                    Node chil = chilList.item(j);
                    // 判断node类型为非text类型的
                    if (chil.getNodeType() == Node.ELEMENT_NODE) {
                        System.out.println(chil.getNodeName() + ":"
                                + chil.getFirstChild().getNodeValue());
                    }
                }
                System.out.println();
            }
        } catch (ParserConfigurationException 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();
        }
    }

    /**
     * 生成xml 2015-10-27 Joy
     * 
     */
    public void crateXML() {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try {
            builder = factory.newDocumentBuilder();
            Document document =builder.newDocument();
            //创建根节点
            Element element = document.createElement("books");
            //根节点添加属性
            element.setAttribute("id", "one");
            //创建子节点 book
            Element chilElement = document.createElement("book");
            //子节点添加属性id
            chilElement.setAttribute("id", "1");
            //创建name节点,将name节点添加到book节点下
            Element chil1 = document.createElement("name");
            //给nama节点添加text值
            chil1.setTextContent("冰月创奇");
            chilElement.appendChild(chil1);


            //将子节点添加到根节点中
            element.appendChild(chilElement);
            document.appendChild(element);
            //创建TransformerFactory 对象
            TransformerFactory tranformerFactory = TransformerFactory.newInstance();
            try {
                //创建transformer对象
                Transformer transformer = tranformerFactory.newTransformer();
                //设置xml文件自动换行
                transformer.setOutputProperty(OutputKeys.INDENT, "YES");
                //将dom树转换成xml文件
                transformer.transform(new DOMSource(document), new StreamResult(new File("src/source/book11.xml")));
            } catch (TransformerConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        DomTest test = new DomTest();
        test.crateXML();
    }
}

dom解析xml文件

package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import com.sun.xml.internal.ws.message.RootElementSniffer;
import com.sun.xml.internal.ws.util.xml.CDATA;

import entity.Books;

public class JDOMTest {




    /**
     * 利用JDOM解析XML文件 2015-10-26 Joy
     * 
     */
    public void getXmlInfo() {
        // 创建洒下builder对象
        SAXBuilder saxBuilder = new SAXBuilder();
        FileInputStream in;
        try {
            // 创建输入流
            in = new FileInputStream("src/source/book.xml");
            // 利用转换流将字节流fileinputstream转换成utf-8格式的字节流 ,解决乱码问题
            InputStreamReader isr = new InputStreamReader(in, "utf-8");
            // 加载流中的数据
            Document document = saxBuilder.build(isr);
            // 获取根借点 books
            Element element = document.getRootElement();
            // 获取根节点下的子节点 book
            List<Element> chilList = element.getChildren();
            for (Element childer : chilList) {
                // 获取解析的book书位置,(第几本书)
                System.out.println("解析第" + (chilList.indexOf(childer) + 1)
                        + "本书");
                // 知道属性名为id获取属性值;
                System.out.println("id的属性:"
                        + childer.getAttribute("id").getValue());
                // 不知道属性名,获取属性名和属性值
                List<Attribute> attrList = childer.getAttributes();
                for (Attribute attr : attrList) {
                    System.out.println("属性名:" + attr.getName());
                    System.out.println("属性值:" + attr.getValue());
                }
                // 获取book下的子节点
                List<Element> childerList = childer.getChildren();
                for (Element chil : childerList) {
                    System.out.println(chil.getName() + ":" + chil.getValue());
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 利用jdom解析xml,并将信息放入到books对象中
     * 2015-10-26
     *   Joy
     *
     */
    public void getXmlInofToENntity() {
        List<Books> booksList = new ArrayList<Books>();
        SAXBuilder saxBuilder = new SAXBuilder();
        InputStream is;
        try {
            is = new FileInputStream("src/source/book.xml");
            InputStreamReader isr = new InputStreamReader(is, "utf-8");
            Document document = saxBuilder.build(isr);
            Element root = document.getRootElement();
            List<Element> elementList = root.getChildren();
            for (Element element : elementList) {
                // System.out.println(elementList.indexOf(element)+1);
                Books book = new Books();
                book.setId(element.getAttribute("id").getValue());
                List<Element> chilList = element.getChildren();
                for (Element chil : chilList) {
                    String elementName = chil.getName();
                    // System.out.println(elementName);
                    if (elementName.equals("name")) {
                        book.setName(chil.getValue());
                    }
                    if (elementName.equals("author")) {
                        book.setAuthor(chil.getValue());
                    }
                    if (elementName.equals("year")) {
                        book.setYear(chil.getValue());
                    }
                    if (elementName.equals("price")) {
                        book.setPrice(chil.getValue());
                    }
                    if (elementName.equals("language")) {
                        book.setLanguage(chil.getValue());
                    }
                }
                booksList.add(book);
                book = null;
            }
            for (Books book1 : booksList) {
                System.out.println(book1.getName() + "," + book1.getAuthor()
                        + "," + book1.getLanguage() + "," + book1.getPrice()
                        + "," + book1.getYear());
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JDOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    /**
    *创建xml文件
    *
    */
    public void createXML(){
        Element rootElement = new Element("root");
        rootElement.setAttribute("version", "2.0");
        Document document = new Document(rootElement);

        Element element = new Element("child");
        element.setText("孩子");
        rootElement.addContent(element);

        Element elementChild = new Element("childer");
        elementChild.setText("<孙子>");
        element.addContent(elementChild);

        Format format = Format.getCompactFormat();
        format.setIndent("");
        format.setExpandEmptyElements(true);
        XMLOutputter output = new XMLOutputter(format);
        try {
            output.output(document, new FileOutputStream(new File("src/source/jdom.xml")));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    public static void main(String[] args) {
        JDOMTest test = new JDOMTest();
        //test.getXmlInofToENntity();
        test.createXML();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值