xml文件解析
来源:互联网 发布:淘宝 导航 css居中 编辑:程序博客网 时间:2024/05/17 02:51
写了一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----SAX解析XML文件
- XML---DOM4J解析XML文件
- XML DOM解析XML文件
- XML SAX解析xml文件
- XML jDOM解析XML文件
- XML DOM4J解析XML文件
- 解析XML文件___SAX解析
- java 解析 xml文件
- XML文件解析
- XML文件解析
- JstL解析XML文件
- xml文件解析办法
- DOM解析XML文件
- XML文件解析心得
- xml文件解析-SAX
- xml文件解析-DOM
- xml文件解析-JDOM
- xml文件解析-DOM4J
- mysqli编程入门
- Fixed Float Format Intro - Q format
- 特殊的数字
- Android写文件到SDCard的一般过程和代码
- makefile学习笔记----- 我的第一个能执行的makefile文件
- xml文件解析
- 【Android】图片操作工具类(ImageUtil.java)
- 互联网Offer选择恐惧症:到底哪家适合你?
- 初识OpenGL
- Windows下,MySQL5.6.x 免安装版(*.zip)的配置
- 贪心算法-杭电oj2037
- Learning OpenStack Keystone
- 自定义控件(32)---【转载】Animation 动画(三)ObjectAnimator、valueAnimator
- 源码安装MySQL5.5.24(基于CentOS或者Redhat5.4操作系统)