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 + ">"); } }
运行结果:
查看全文
相关阅读:
LeetCode 326. Power of Three
LeetCode 324. Wiggle Sort II
LeetCode 322. Coin Change
LeetCode 321. Create Maximum Number
LeetCode 319. Bulb Switcher
LeetCode 318. Maximum Product of Word Lengths
LeetCode 310. Minimum Height Trees (DFS)
个人站点大开发!--起始篇
LeetCode 313. Super Ugly Number
LeetCode 309. Best Time to Buy and Sell Stock with Cooldown (DP)
原文地址:https://www.cnblogs.com/lcqBlogs/p/2392380.html
最新文章
Asp.Net Core 3.1学习-Web Api 中基于JWT的token验证及Swagger使用 (4)
Asp.Net Core 3.1学习-Web Api 文件上传 Ajax请求以及跨域问题(3)
Asp.Net Core 3.1学习-使用ASP.NET Core中的RazorPages(2)
Asp.Net Core 3.1学习-初始.Net Core与VS Code 第一个web程序(1)
EF 学习系列三 数据操作数据加载及EF中执行Sql
EF 学习系列二 数据库表的创建和表关系配置(Fluent API、Data Annotations、约定)
Asp.Net MVC中Aplayer.js音乐播放器的使用
Asp.Net WebApi一个简单的Token验证
VS2017 无法修改代码编辑区的项背景颜色问题
asp.net MVC ajax 请求参数前台加密后台解密
热门文章
Entity Farmework领域建模方式 3种编程方式
Asp.Net MVC中记录错误日志保存到本地txt文件
传销天津天狮洗脑课程
Asp.Net MVC Web API 中Swagger教程,使用Swagger创建Web API帮助文件
Asp.Net MVC 读取json文件
程序员奇谈之我写的程序不可能有bug篇
快速字符串匹配一: 看毛片算法(KMP)
HttpClient参观记:.net core 2.2 对HttpClient到底做了什么?
文本分类学习 (四) 特征选择之卡方检验
Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考
Copyright © 2011-2022 走看看