XML解析技术和使用Jaxp对xml文档进行dom解析
来源:互联网 发布:crossfit slash知乎 编辑:程序博客网 时间:2024/05/17 05:11
用dom和sax对xml文档进行解析,可以使用已开发的xml解析开发包,我们直接调用即可。xml解析开发包有:Jaxp(最差)、Jdom(一般)、dom4j(最好)。
JAXP:
定义一个xml文档:
<?xml version="1.0" encoding="UTF-8"?><书架> <书> <书名 name="xxxx">java就业培训课程</书名> <作者>张孝祥</作者> <售价>109元</售价> <售价>39.00元</售价> </书> <书> <书名>javaScript网页开发</书名> <作者>张孝祥</作者> <售价>109元</售价> <售价>28.00元</售价> </书></书架>
Jaxp解析xml文档的代码:
package xml;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;public class Demo2 { public static void main(String[] args) throws Exception { //1、创建工厂 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //2、得到dom解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器 //3、解析xml文档,得到代表文档的document Document document= builder.parse("src/xml/book.xml"); }}
这样会得到文档的document对象,再对这个对象进行操作即可。
例:
package xml;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.junit.Test;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;//使用dom方式对xml文档进行crudpublic class Demo3 { //读取xml文档中:<书名>javaScript网页开发</书名> 节点中的值 @Test public void read1() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document NodeList list=document.getElementsByTagName("书名"); //根据标签名“书名”返回内容集合 Node node=list.item(1); //下标从0开始,取第二个元素 String content=node.getTextContent(); //得到节点里的文本内容 System.out.println("read1:"); System.out.println(content); System.out.println(); } //得到xml文档中的所有节点(标签):使用递归,先得到根节点,再一层层往下找子节点 @Test public void read2() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document //得到根节点 Node root=document.getElementsByTagName("书架").item(0); //因为只有一个根节点,集合中只有一个元素,直接.item(0)即可得到 System.out.println("read2:"); //得到根节点的孩子(递归方法) list(root); System.out.println(); } private void list(Node node) { if(node instanceof Element){ //判断node是不是标签,是标签才打印,否则打印结果会出现#text System.out.println(node.getNodeName()); //打印得到的节点的名称 } NodeList list=node.getChildNodes(); //得到所有孩子,返回一个集合 for(int i=0;i<list.getLength();i++){ //遍历这个集合 Node child=list.item(i); //得到每一个孩子 list(child); //迭代,得到孩子的孩子 } } //得到xml文档中标签属性的值:<书名 name="xxxx">java就业培训课程</书名> 即name的值 @Test public void read3() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document /* * getAttributes()会得到节点的所有属性,必须要再进行一次遍历才行,这样较麻烦, * 直接将bookname强制转换成Element(在已知的情况下才能转换) * */ Element bookname=(Element) document.getElementsByTagName("书名").item(0); //得到第一个书名标签 String value=bookname.getAttribute("name"); //得到name属性的值 System.out.println("read3:"); System.out.println(value); }}
运行结果:
0 0
- xml解析技术概述和使用Jaxp对xml文档进行dom解析
- XML解析技术和使用Jaxp对xml文档进行dom解析
- JAXP对xml文档进行DOM解析
- jaxp对xml文档进行dom解析
- 使用JAXP对xml文档进行Dom解析
- 使用JAXP对xml文档进行Dom解析
- 使用JAXP对XML文档进行DOM解析
- 【XML解析】使用Jaxp对XML进行DOM解析
- Java对XML文档进行解析(JAXP-DOM解析)
- 对XML文档进行JAXP的DOM解析
- 利用JAXP的DOM方式对xml文档进行解析
- JAXP对XML文档进行DOM解析实现增删改
- xml学习笔记(4)使用Jaxp对xml文档进行dom解析
- 【XML解析】(1)Java下使用JAXP中的DOM解析方式对XML文档进行解析
- 使用jaxp对XML文件进行dom解析
- xml--解析02--jaxp对xml进行dom解析
- 使用DOM技术来对XML文档进行解析范例
- XML - JAXP技术 - DOM解析
- Android之自定义ViewGroup
- 单例模式
- jdk tomcat 安装
- Fragment跳转
- Spring Mvc那点事---(4)Spring Mvc控制器Controller
- XML解析技术和使用Jaxp对xml文档进行dom解析
- ElasticSearch 攻略(三)概念认识
- Linux kernel模块管理相关详解
- deque的用法
- 代码训练营——TreeMap
- Android中的Matrix
- Google Cloud宣布加入NodeJS基金会
- CSDN开箱感言
- Android高级图片滚动控件,编写3D版的图片轮播器