您的位置:首页 > 其它

xml文件解析

2015-11-22 12:19 323 查看
写了一xml文件解析和制作的代码,方便以后的使用

package com.produce;

import java.awt.List;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.text.Format;

import java.util.ArrayList;

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.Attr;

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;

import Jbdc.MyDal;

import com.xml.Dao.xmlData;

public class produceXML {

    private static Document document;

    public void init() {

        try {

            DocumentBuilderFactory factory = DocumentBuilderFactory

                    .newInstance();

            DocumentBuilder builder = factory.newDocumentBuilder();

            document = builder.newDocument();

        } catch (ParserConfigurationException e) {

            System.out.println(e.getMessage());

        }

    }

    public void createXml(ArrayList list) {

        init();

        Element root = document.createElement("configs"); // 创建根节点名字可变

        document.appendChild(root);

        Element number = document.createElement("number"); // 创建根节点名字可变

        /* 创建一个完成的节点,start */

        for (int i = 0; i < list.size(); i++) {

            xmlData data = (xmlData) list.get(i);

            Element item = document.createElement("item");

            Attr name = document.createAttribute("name");

            item.setAttribute("name", "Name"); // 增加属性的另一种方法

            item.appendChild(document.createTextNode(data.getDataName()));

            number.appendChild(item);

            Element item1 = document.createElement("item");

            Attr name1 = document.createAttribute("name");

            item1.setAttribute("name", "Number"); // 增加属性的另一种方法

            item1.appendChild(document.createTextNode(data.getID()));

            number.appendChild(item1);

            root.appendChild(number);

        }

        // 将DOM对象document写入到xml文件中

        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("xml数据记录"));

            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());

        }

    }

    /*

     * 解析xml文件

     *

     * @return 返回一个链表 如果链表为空创建xml文件

     */

    public ArrayList<xmlData> parserXml() {

        try {

            String name = null;

            String number = null;

            ArrayList<xmlData> list = new ArrayList<xmlData>();

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

            DocumentBuilder db = dbf.newDocumentBuilder();

            Document document = db.parse("xml数据记录");

            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 += 1) {

                        xmlData xmldata = new xmlData();

                        if (k % 2 == 1) {

                            if (name == null) {

                                name = employeeMeta.item(k).getTextContent();

                            } else {

                                number = employeeMeta.item(k).getTextContent();

                                xmldata.setDataName(name);

                                xmldata.setID(number);

                                list.add(xmldata);

                                System.out.println("name:" + name + ";"

                                        + "number:" + number);

                                name = null;

                            }

                        }

                    }

                }

            }

            System.out.println("解析完毕");

            return list;

        } catch (FileNotFoundException e) {

            produceXML j2x = new produceXML();

            try {

                j2x.buildxml();

            } catch (SQLException e1) {

                

                e1.printStackTrace();

            }

            return null;

        } catch (ParserConfigurationException e) {

            System.out.println(e.getMessage());

        } catch (SAXException e) {

            System.out.println(e.getMessage());

        } catch (IOException e) {

            System.out.println(e.getMessage());

        }

        return null;

    }

    /*

     * xml中查询数据

     *

     * @return <0 说明存在或者表中没有该项数据 ; >0返回上次读取数字ID

     */

    public String findnumber(String dataname) {

        String number = "-1";

        produceXML j2x = new produceXML();

        ArrayList<xmlData> list = j2x.parserXml();

        if (list != null) {

            for (int i = 0; i < list.size(); i++) {

                xmlData item = list.get(i);

                if (dataname.equals(item.getDataName())) {

                    number = item.getID();

                    break;

                }

            }

        }

        return number;

    }

    /*

     * 创建初始化xml文件

     */

    public void buildxml() throws SQLException {

        produceXML j2x = new produceXML();

        MyDal dbsql = new MyDal();

        xmlData data=null;

        ArrayList<xmlData> list2 = new ArrayList<xmlData>();

        String[] list = { "leadership", "tyst", "jgjj", "jgzn", "gzgz", "flfg",

                "tsff", "xzsyxsf", "zfxjj", "xzsp", "busiess", "zfwnrbz",

                "zxfw", "bjxxfb", "btffxx", "dqgk", "lxfs", "zxjbszn" };

        for (int i = 0; i < list.length; i++) {

            data=new xmlData();

            data.setDataName(list[i]);

            String sql = j2x.sql(i);

            System.out.println(list[i]+":"+sql);

            ResultSet rs = dbsql.Query(sql);

            boolean b = rs.last();

            if (b) {

                data.setID(rs.getString(1));

            }else{

                data.setID("0");

            }

            list2.add(data);

        }

        createXml(list2);

    }

    public static void main(String[] args) {

        try {

            produceXML j2x = new produceXML();

            ArrayList<xmlData> list = new ArrayList<xmlData>();

            list = j2x.parserXml();

            j2x.buildxml();

            if (list == null) {

                System.out.println("kong");

            }

        } catch (Exception e) {

            e.printStackTrace();

            System.out.println(e.getMessage());

        }

    }

}

dao

package com.xml.Dao;

public class xmlData {

    public String ID;

    public String  dataName;

    public String getID() {

        return ID;

    }

    public void setID(String iD) {

        ID = iD;

    }

    public String getDataName() {

        return dataName;

    }

    public void setDataName(String dataName) {

        this.dataName = dataName;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml文件解析