Java xml创建及解析

来源:互联网 发布:做视频短片的软件 编辑:程序博客网 时间:2024/06/05 12:03

手写一个简单的xml文件:

<?xml version="1.0" encoding="utf-8"?><bookstore><book id="1"><name>狗带是怎样炼成的</name>        <author>bob</author>        <year>2008</year>    <price>89</price></book><book id="2"><name>狗带是怎样炼成的</name>        <author>楚留香</author>        <year>2017</year>    <price>100</price>    <language>English</language></book></bookstore>

java程序解析xml文件:

目的:获取节点名,节点值,属性名,属性值.  获得里面的数据

4种方式:

(1).DOM解析(2)SAX解析--------(JAVA官方提供)

(3)DOM4J解析(4)JDOM解析

DOM解析示例:

package DOMTest;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.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class DOMTest {public static void main(String[] args) {//1.创建一个DocumentBuilderFactory对象DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();//2.DocumentBuilder的对象的parse方法解析xmltry {//3.创建一个DocumentBuilder对象DocumentBuilder db=dbf.newDocumentBuilder();//4.DocumentBuilder对象.parse方法解析Document document=db.parse("books.xml");//5.获取所有book节点集合NodeList bookList=document.getElementsByTagName("book");System.out.println("一共有"+bookList.getLength()+"节点");//6.遍历集合 book每一个节点for (int i = 0; i < bookList.getLength(); i++) {System.out.println("下面开始遍历第"+(i+1)+"本书的内容==========开始遍历");//7.通过item(i)获取节点,bookList的索引值从零开始Node book=bookList.item(i);//8.遍历Node属性,获取节点所有属性的集合NamedNodeMap map=book.getAttributes();//9获取map里面有多少中属性的个数System.out.println("第"+(i+1)+"本书共有"+map.getLength()+"个属性");//10.遍历book的属性for (int j = 0; j < map.getLength(); j++) {//11.通过item(i)获取属性Node atter=map.item(j);//12.获取属性名字=====getNodeName方法String Attributename=atter.getNodeName();System.out.println("属性名"+Attributename);//12.获取属性值=====getNodeValue方法String Valuename=atter.getNodeValue();System.out.println("属性值"+Valuename);    System.out.println("下面开始遍历第"+(i+1)+"本书的内容==========结束遍历");}}} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


打印结果:

一共有2节点

下面开始遍历第1本书的内容==========开始遍历

第1本书共有1个属性

属性名id

属性值1

下面开始遍历第1本书的内容==========结束遍历

下面开始遍历第2本书的内容==========开始遍历

第2本书共有1个属性

属性名id

属性值2

下面开始遍历第2本书的内容==========结束遍历