一百、Dom
(1)、创建树
// 获取树对象(反射)
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// 创建树
Document dtree = db.newDocument();
// 通过树来创建标签
Element databases = dtree.createElement("databases");
// 1、将标签填入到树中
dtree.appendChild(databases);
for (int i = 0; i < 3; i++) {
// 2、创建databases的子标签
Element database = dtree.createElement("database");
// 创建database的子标签
Element url = dtree.createElement("url");
Element user = dtree.createElement("user");
Element password = dtree.createElement("password");
// 子标签复赋值 url.setTextContent("jdbc:mysql://localhost:3306/aowin");
user.setTextContent("root");
password.setTextContent("163041");
// 3、将子标签添到database中
database.appendChild(url);
database.appendChild(user);
database.appendChild(password);
// 4、给标签的子标签database赋属性值
database.setAttribute("id", i + "" + 1);
// 5、将student添加到databases中
databases.appendChild(database);
}
Transformer tf = TransformerFactory.newInstance().newTransformer();
// 将树作为传输对象
Source xmlSource = new DOMSource(dtree);
Result outputTarget = new StreamResult(f);
tf.transform(xmlSource, outputTarget);
(2)、获取树
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// 获得指定xml文件的树形结构
Document d = db.parse(f);
// Dom两种方式获取数据:
// 2.从根节点开始遍历
// 获取文件根节点
Element databases = (Element)d.getFirstChild();// 获取根节点
// 获取根节点的子节点集合
NodeList list = databases.getChildNodes();
// 遍历子节点集合
for (int i = 0; i < list.getLength(); i++) {
// 获取子节点的子节点集合
Element database = (Element) list.item(i);
System.out.println("id:" + database.getAttribute("id"));
NodeList child = database.getChildNodes();
// 遍历输出所有子节点
for (int j = 0; j < child.getLength(); j++) {
Element childs = (Element) child.item(j);
System.out.println(" " + childs.getTagName() + ":" + childs.getTextContent());
}
}
一百零一、dom4j
(1)、创建树
// 获得树对象
Document d = DocumentHelper.createDocument();
// 创建根节点
Element databases = d.addElement("databases");
// 给根节点添加3个子节点
for (int i = 0; i < 3; i++) {
// 添加子节点
Element database = databases.addElement("database");
// 给database赋属性值
database.addAttribute("id", i + "" + 1);
for (int j = 0; j < 1; j++) {
// 给子节点添加子节点
Element url = database.addElement("url");
Element user = database.addElement("user");
Element password = database.addElement("password");
// 设置值
url.setText("jdbc:mysql://localhost:3306/aowin");
user.setText("root");
password.setText("163041");
}
}
// 写入指定文件
FileWriter fw = new FileWriter(f);
// 第二个参数可加可不加,是美化输出
XMLWriter x = new XMLWriter(fw, OutputFormat.createPrettyPrint());
x.write(d);
fw.close();
(2)、获取树
SAXReader sr = new SAXReader();
Document d = sr.read(f);
// 只能从根节点访问
// 获取根节点
Element students = d.getRootElement();
// 获得子节点集合
List<Element> l = students.elements();
// 遍历子节点集合
for (Element e : l) {
// 设置属性
System.out.println("id:" + e.attributeValue("id"));
// 子节点的子节点集合
List<Element> child = e.elements();
// 遍历子节点的子节点集合
for (Element c : child) {
System.out.println(" " + c.getName() + ":" + c.getText());
}
}
一百零二、将XML文件的数据插入到数据库中
String sql = "insert into apple values (?, ?, ?)";
try {
conn = DbUtils.getConnection();
ps = conn.prepareStatement(sql);
// 读取xml文件,按路径读取,获得document对象
Document doc = new SAXReader().read(file);
// 获取根节点
Element students = doc.getRootElement();
// 获得子节点集合
List<Element> l = students.elements();
// 遍历读出xml中的节点
for (Iterator iter = l.iterator(); iter.hasNext();) {
Element el = (Element) iter.next();
// 读取节点的内容并赋值
String id = el.elementText("id");
String color = el.elementText("color");
String money = el.elementText("money");
// 为sql语句赋值
ps.setString(1, id);
ps.setString(2, color);
ps.setString(3, money);
ps.addBatch();
}
// 批量执行sql语句
try {
ps.executeBatch();
System.out.print("将XML导入数据库成功");
} catch (BatchUpdateException e) {
System.out.println(e.getMessage());
System.out.println("数据类型不匹配!!!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtils.closeAll(conn, ps, null);
}
一百零三、将数据库中的信息插入到XML文件中
boolean b = false;
// 获得树对象
Document d = DocumentHelper.createDocument();
// 创建根节点
Element databases = d.addElement("databases");
// 创建一个集合
hset = new HashSet<Integer>();
// 获取从数据库中获得数据并添加到al这个集合中
List<Apple> al = selectMysql();
for (int i = 0; i < al.size(); i++) {
Apple s = al.get(i);
// 在通过Apple 这个对象将数据转存到hash集合中去。
hset.add(s.getId());
}
for (int k = 0; k < 1; k++) {
// 通过循环将集合中的数据形成一种dom4j树
for (Iterator<Integer> it = hset.iterator(); it.hasNext();) {
Integer classId = it.next();
// 创建子节点
Element classEle = databases.addElement("database");
classEle.addAttribute("id", k + "" + 1);
// 创建子节点的子节点
for (int i = 0; i < 1; i++) {
Apple s = al.get(i);
if (classId.equals(s.getId())) {
// Element studentEle = classEle.addElement("apple");
classEle.addElement("id").addText(s.getId() + "");
classEle.addElement("color").addText(s.getColor());
classEle.addElement("money").addText(s.getMoney() + "");
}
}
}
}
try {
// 编写输出格式
OutputFormat format = null;
// 生成压缩格式、紧凑格式的xml 其中的compact format 翻译:压缩格式
format = OutputFormat.createPrettyPrint();
// 将document 也就是这个dom4j树输出到指定 path 下的.xml文件中去
XMLWriter writer = new XMLWriter(new FileWriter(f), format);
// format.setEncoding("gb2312");
writer.write(d);
writer.close();
b = true;
System.out.print("将数据库信息导入XML文件成功");
} catch (IOException e) {
e.printStackTrace();
}
return b;
一百零四、查询数据库
conn = DbUtils.getConnection();
String sql = "select * from apple where id=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, 123);
rs = ps.executeQuery();//返回布尔类型,代表语句是否执行成功
List<Apple> l = new ArrayList<Apple>();
while (rs.next()) {
Apple p = new Apple();
p.setId(rs.getInt("id"));
p.setColor(rs.getString("color"));
p.setMoney(rs.getInt("money"));
l.add(p);
}
DbUtils.closeAll(conn, ps, rs);
return l;