TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
一、写入xml文件
java使用DOM创建如下xml: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<name id="2">zs</name>
</root> 代码如下:
package com.wasw100; import java.io.File; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
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.Text; public class CreateXML {
public static void main(String[] args) throws Exception {
//实例化解析器
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//创建Document对象
Document doc = builder.newDocument(); //创建XML文件所需的各种对象并序列化
Element root = doc.createElement("root");
Element name = doc.createElement("name");
Text nameText = doc.createTextNode("zs"); name.appendChild(nameText);
root.appendChild(name);
doc.appendChild(root);
name.setAttribute("id", "2"); doc2XmlFile(doc,"test.xml"); } public static boolean doc2XmlFile(Document document, String filename) {
boolean flag = true;
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 编码 */
// transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
} catch (Exception ex) {
flag = false;
ex.printStackTrace();
}
return flag;
}
}
二、读文件
<?
xml version="1.0" encoding="GB2312"
?>
<
people
>
<
person
personID
="1"
>
<
name
>
CY
</
name
>
<
age
>
22
</
age
>
<
address
>
武汉
</
address
>
</
person
>
<
person
personID
="2"
>
<
name
>
SUN
</
name
>
<
age
>
18
</
age
>
<
address
>
襄樊
</
address
>
</
person
>
<
person
personID
="3"
>
<
name
>
LiGuo
</
name
>
<
age
>
55
</
age
>
<
address
>
武汉
</
address
>
</
person
>
<
person
personID
="4"
>
<
name
>
wj
</
name
>
<
age
>
55
</
age
>
<
address
>
应城
</
address
>
</
person
>
</
people
>
//====java文件===treeTest.java=================

/**/
/*
* treeTest.java
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package
javaapplication2;

/** */
/**
*
* @author Administrator
*/
import
java.awt.
*
;
import
javax.swing.
*
;
import
javax.swing.tree.
*
;
import
javax.swing.event.
*
;
import
org.w3c.dom.
*
;
import
javax.xml.parsers.
*
;

class
treeTest
extends
JFrame

{
private JTree tree=null;
private DefaultTreeModel treeModel=null;
private static String Na=null; //定义Name元素
private static String Ag=null; //定义Age元素
private static String Address=null; //定义Address元素
private static String sqlStr=null;
private static String person=null;
DefaultMutableTreeNode root=null;
DefaultMutableTreeNode aaa=null;
DefaultMutableTreeNode ccc1=null;
DefaultMutableTreeNode ccc2=null;
DefaultMutableTreeNode ccc3=null;
public treeTest(String tit) throws Exception {
super(tit);
javax.xml.parsers.DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//根据解析器工厂来获得具体的加载文档对象
javax.xml.parsers.DocumentBuilder builder=factory.newDocumentBuilder();
//加载XML文件 路径不能是中文
Document doc=builder.parse("a.xml");
NodeList n1=doc.getElementsByTagName("person");
root=new DefaultMutableTreeNode("People");
treeModel=new DefaultTreeModel(root);
tree=new JTree(treeModel);
for(int i=0;i<n1.getLength();i++) {
//生成一个Element对象来存放具体节点的值
Element node=(Element)n1.item(i);
person=node.getNodeName().toString()+i;
Na=node.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
Ag=node.getElementsByTagName("age").item(0).getFirstChild().getNodeValue();
Address=node.getElementsByTagName("address").item(0).getFirstChild().getNodeValue();
aaa=new DefaultMutableTreeNode(person);
ccc1=new DefaultMutableTreeNode(Na);
ccc2=new DefaultMutableTreeNode(Ag);
ccc3=new DefaultMutableTreeNode(Address);
aaa.add(ccc1);
aaa.add(ccc2);
aaa.add(ccc3);
treeModel.insertNodeInto(aaa,root,i); //将每个aaa加到根节点root中
}
getContentPane().add(tree,BorderLayout.CENTER);
final JLabel messageLabel=new JLabel("用户还没有选择!");
add(messageLabel,BorderLayout.SOUTH);
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent t) {
TreePath tp=t.getNewLeadSelectionPath();
messageLabel.setText("您选择了:"+tp.getLastPathComponent());
}
});
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]) throws Exception {
JFrame.setDefaultLookAndFeelDecorated(true);
new treeTest("JTree-XML-Test");
}
运行结果:

源码下载:http://file.javaxxz.com/2014/10/10/005932468.zip |
|