1. 为什么需要XML解析?
a) XML用于应用程序的配置文件。
b) 不同语言、不同平台之间数据交换。
2. 如何解析xml?
有4种技术,可以用于解析xml:
DOM、JDOM、dom4j、Sax
Dom——原生态标准模型。
Jdom——Java定制模型。(专门针对Java语言)
Dom4j——优化Jdom之后的版本。(性能非常高)
(树形)
Sax——适合于大型xml文件;编码难度高。(事件模型)
总结:大型xml只能使用sax;其他使用jdom或者dom4j。
树形特点:一次性加载全部的XML文件数据。(适合于小型XML文件)
事件模型:按需加载指定部分数据。(适合于大型XML文件)
3. 如何使用Jdom解析xml?
注:XML解析最核心的一个类:Document(文档,表示一个XML文件)
xml文件标准格式:
1. 文件的后缀名必须是.xml文件。 2. 必须有一个头文件。 <?xml version="1.0" encoding="UTF-8"?> 3. 必须且只能有一个根节点。 |
问题:如何利用Java程序读取XML文件中的数据?
答案:解析xml
JDOM解析步骤:
1. 创建解析器对象SaxBuilder。
2. 获取Document文档对象。
3. 获取根节点。
4. 获取根节点一下的子节点及值。
JDOM写XML文件:
1. 创建根节点。
2. 创建子节点,并将子节点添加到根节点。
3. 创建一个document文档对象。
4. 输出文档对象到一个文件中。(注意格式)
代码实例:
保存数据
public class WriterXML {public static void main(String[] args) {
//创建文档对象
Document doc = DocumentHelper.createDocument();
//调用查询方法,获取查询的数据
List<UserInfo> list = new UserInfoDAO().queryAll();
Element root = doc.addElement("userinfos");
for(UserInfo u : list){
Element user = root.addElement("user");
user.addAttribute("uid", u.getUid()+"");
user.addElement("uname").setText(u.getUname());
user.addElement("upwd").setText(u.getUpwd());
}
OutputFormat fmt = new OutputFormat();
fmt.setIndentSize(4);
fmt.setNewlines(true);
try {
XMLWriter out = new XMLWriter(new FileOutputStream(new File("c:/test.xml")),fmt);
out.write(doc);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("创建成功");
}
}
读取 数据:
public class ReaderXML {
public static void main(String[] args) {
//1. 创建解析器
SAXReader reader = new SAXReader();
try {
//2. 读取文档
Document dom = reader.read(new File("e:/testwriter.xml"));
Element root = dom.getRootElement();
List<Element> list = root.elements();
for(Element e : list){
System.out.print(e.attribute("uid").getValue());
System.out.print(e.elementText("uname")+"\t");
System.out.print(e.elementText("upwd")+"\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}