黑马程序员 - Java访问XML文件 - 两种方式
2013-04-01 18:31
399 查看
-------
android培训、java培训、期待与您交流! ----------
Java访问XML文件在很多项目中都常用到,这里先贴出两个jar文件的下载连接:jdom.jar 下载 xml-api.jar下载
2、通过XML-APIS访问XML文件
android培训、java培训、期待与您交流! ----------
Java访问XML文件在很多项目中都常用到,这里先贴出两个jar文件的下载连接:jdom.jar 下载 xml-api.jar下载
1、通过Jdom访问XML文件(此方法较下文第二种简单)
package com.leeyou.accessXMLFile; import java.io.IOException; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; /** * 用JDOM读取XML文件步骤 * 1、先引入jdom.jar 文件 * 2、再用org.jdom.input.SAXBuilder对象的build()方法创建Document对象 * 3、然后用Document类、Element类等的方法读取所需的内容 * * @author LeeYou * */ public class Java_Access_XMLFile_ByJdom { public static void main(String[] args) throws JDOMException, IOException { SAXBuilder sb = new SAXBuilder(); Document doc = sb.build("Files/myDisk.xml");// 构造文档对象 Element root = doc.getRootElement();// 取得根元素 List<?> list = root.getChildren("disk");// 取得名字为disk的所有元素 System.out.println("分区盘符\t\t分区容量\t\t目录数\t\t文件数"); for (int i = 0; i < list.size(); i++) { Element element = (Element) list.get(i); String name = element.getAttributeValue("name"); String capacity = element.getChildText("capacity");//取disk子元素capacity的内容 String directories = element.getChildText("directories"); String files = element.getChildText("files"); System.out.println(name + "\t\t" + capacity + "\t\t" + directories+ "\t\t" + files); } } }
XML文件如下(myDisk.xml):
<?xml version="1.0" encoding="UTF-8"?> <HD> <disk name="C"> <capacity>8G</capacity> <directories>200</directories> <files>1580</files> </disk> <disk name="D"> <capacity>10G</capacity> <directories>500</directories> <files>3000</files> </disk> </HD>
2、通过XML-APIS访问XML文件
package com.leeyou.accessXMLFile; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; 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; /** * 用DOM读取XML文件步骤 * 1、先引入dom.jar 文件 * 2、再用DocumentBuilderFactory工厂类创建DocumentBuilder类型的实例 * 3、然后构造Document对象、构造Element对象 * * @author LeeYou * */ public class Java_Access_XMLFile_ByXMLAPIS1 { public static void main(String[] args) throws ParserConfigurationException,SAXException, IOException { Element root = null; File file = new File("Files/accounts.xml"); DocumentBuilder db = null; //DocumentBuilderFactory dbf = null; //dbf = DocumentBuilderFactory.newInstance(); //db = dbf.newDocumentBuilder(); //此句将上三行代码融为一行 db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document dt = db.parse(file); root = dt.getDocumentElement();// 取得第一个根元素 /** * 准备工作完毕,开始操作XML文件内容 */ NodeList childNodes = root.getChildNodes();// 获得根元素下的子节点 //System.out.println("此xml文档的子节点数为:"+childNodes.getLength());// 文档对象模型:空白处即"#text"节点 System.out.println("类型\t\tID\t\t密码\t\t账户\t\t金额"); String type = null , code = null, pass = null, name = null, money = null; for (int i = 0; i < childNodes.getLength(); i++) { // System.out.println("Account".equals(childNodes.item(i).getNodeName())); Node node = childNodes.item(i);// 获取对应位置的节点 if ("Account".equals(node.getNodeName())) { type = node.getAttributes().getNamedItem("type").getNodeValue();//// 取Account元素属性type的值 NodeList nodeList = node.getChildNodes();// 获取<Account>元素下每一个节点 //循环取出<code>、<pass>、<name>、<money> for (int j = 0; j < nodeList.getLength(); j++) { Node detail = nodeList.item(j); String detail_name = detail.getNodeName(); if ("code".equals(detail_name)) { code = detail.getTextContent(); } else if ("pass".equals(detail_name)) { pass = detail.getTextContent(); } else if ("name".equals(detail_name)) { name = detail.getTextContent(); } else if ("money".equals(detail_name)) { money = detail.getTextContent(); } } //格式化打印输出 System.out.println(type + "\t\t" + code + "\t\t" + pass + "\t\t" + name+ "\t\t" + money); } } } }
XML文件如下(accounts.xml):
<?xml version="1.0" encoding="gbk"?> <Accounts> <Account type="中国银行"> <code>100001</code> <pass>lisi..l</pass> <name>李世民</name> <money>1000000.00</money> </Account> <Account type="招商银行"> <code>100002</code> <pass>zhsan123</pass> <name>张无忌</name> <money>1000.00</money> </Account> </Accounts>
相关文章推荐
- java对象访问定位的两种方式解析
- 黑马程序员——java基础——Java中创建线程的两种方式
- Java解析XML文件两种方式
- 黑马程序员--Java学习笔记之多线程(自定义线程的两种方式对比、线程状态、线程安全)
- Java通过JDBC访问数据库(两种方式)
- 黑马程序员---易错、易望、基础、重要知识点——java中最常用的两种排序方式
- 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式
- java中对象的两种访问方式
- java读取xml文件的两种方式
- 黑马程序员——java多线程的两种实现方式
- 黑马程序员-java基础-Collection遍历的两种方式
- 黑马程序员--Java多线程的两种实现方式:继承Thread类 & 实现Runable接口
- java访问后台的两种方式
- Java解析XML文件的两种方式详解
- java中解析xml文件的两种方式
- 黑马程序员——java创建线程的两种创建方式
- 黑马程序员_java创建线程的两种方式
- java读取XML文件的两种方式
- Java解析XML文件的两种方式详解
- 黑马程序员 Java中根据YYYY-MM-DD格式的日期计算为星期几的两种实现方式