zoukankan
html css js c++ java
Java学习之路——使用DOM解析XML文档
第一种方式:使用dom获取属性的值和文本的值进行解析xml
package com.lcq.java.document; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class DomTest1 { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { //第一步:获得dom解析工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //第二部:获得dom解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //第三部:解析一个xml文档,获得Document对象(根节点) Document document = db.parse(new File("test.xml")); System.out.println(document.getXmlEncoding()); System.out.println(document.getXmlVersion()); System.out.println(document.getXmlStandalone()); NodeList nodeList = document.getElementsByTagName("resourceitem"); System.out.println(nodeList.getLength()); for(int i = 0; i < nodeList.getLength(); i++){ Element element = (Element)nodeList.item(i); String title = element.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); System.out.println("title :" + title); String keywords = element.getElementsByTagName("keywords").item(0).getFirstChild().getNodeValue(); System.out.println("keywords :" + keywords); String kind = element.getElementsByTagName("kind").item(0).getFirstChild().getNodeValue(); System.out.println("kind :" + kind); String describe = element.getElementsByTagName("describe").item(0).getFirstChild().getNodeValue(); System.out.println("describe :" + describe); String date = element.getElementsByTagName("date").item(0).getFirstChild().getNodeValue(); System.out.println("date :" + date); System.out.println("------------------------------------------"); } } }
运行结果:
第二种方式:运用递归方法解析一般的xml文档
package com.lcq.java.document; /** * * 功能:运用递归方法解析一般的xml文档 * */ import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Attr; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class DomTest3 { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { //第一步:获得dom解析工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //第二部:获得dom解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //第三部:解析一个xml文档,获得Document对象(根节点) Document document = db.parse(new File("test.xml")); //获得根元素结点 Element root = document.getDocumentElement(); //调用递归函数,打印xml的内容 parseElement(root); } private static void parseElement(Element element){ String tagName = element.getNodeName(); NodeList children = element.getChildNodes(); System.out.print("<" + tagName); //element 元素所构成的属性的NamedNodeMap对象,对其进行判断 NamedNodeMap map = element.getAttributes(); if(null != map){ for(int i = 0 ; i < map.getLength(); i++){ //获取元素的每一个属性 Attr attr = (Attr)map.item(i); String attrName = attr.getName(); String attrValue = attr.getValue(); System.out.print(" " + attrName + "=\"" + attrValue + "\"" ); } } System.out.print(">"); for(int i = 0; i < children.getLength(); i++ ){ Node node = children.item(i); Short nodeType = node.getNodeType(); //是元素类性,进行递归 if(nodeType == Node.ELEMENT_NODE){ parseElement((Element)node); } //是文本类性,打印出来 else if(nodeType ==Node.TEXT_NODE){ System.out.print(node.getNodeValue()); } //是注释,进行打印 else if(nodeType ==Node.COMMENT_NODE){ Comment comment = (Comment)node; String data = comment.getData(); System.out.print("<!--" + data + "-->"); } } System.out.println("</" + tagName + ">"); } }
运行结果:
查看全文
相关阅读:
推荐一款酷炫闪烁的告警按钮
设计模式之单例模式(懒汉式单例、饿汉式单例、登记式单例)
JDK1.8新特性-Lambda表达式
博客园自定义样式(去广告、公告栏加头像、按钮样式)
java月考题JSD1908第二次月考(含答案和解析)
Java面试题_第四阶段
Java面试题_第三阶段(Spring、MVC、IOC、AOP、DI、MyBatis、SSM、struts2)
Java面试题_第二阶段(Servlet、HTTP、Session、JSP、 Ajax、Filter、JDBC、Mysql、Spring)
Java面试题_第一阶段(static、final、面向对象、多线程、集合、String、同步、接口、GC、JVM)
Oracle排名函数(Rank)实例详解
原文地址:https://www.cnblogs.com/lcqBlogs/p/2392380.html
最新文章
markdown中使用缩进
crontab中的%
Java开源网页抓取工具httpClient以及jsoup
phpQuery简介
Snoopy.class.php介绍
[读书笔记]Hadoop权威指南 第3版
HIVE udf实例
union和in哪个效率高
mysql索引不生效
struts1与struts2的区别
热门文章
SpringBoot整合MyBatis获得插入数据后获取主键,返回值总是1
SpringBoot踩坑记(HTTP 400 错误)
SpringBoot2.x整合Shiro出现cors跨域问题(踩坑记录)
Mysql被黑客入侵及安全措施总结
Mybatis常见面试题
MySQL密码正确却无法本地登录-1045 Access denied for user 'root'@'localhost' (using password:YES
自定义SpringBoot控制台输出的图案
Spring Boot 设置项目名后静态文件相对路径问题
IntelliJ IDEA常用快捷键
博客园申请理由
Copyright © 2011-2022 走看看