1.首先,在main方法中解析xml文档,具体代码如下:

import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; public class Main { public static void main(String[] args) throws Exception {
//创建一个文档解析器工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser(); Handler handler=new Handler();
parser.parse("src/server.xml",handler);
}
}

其中,解析时parser.parse("src/server.xml",handler);第一个参数是xml文档的地址,第二个参数是具体的以什么规则解析这个xml文档。

2.重写Handler类,以自由操纵如何具体的解析xml文档的具体值

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; public class Handler extends DefaultHandler { //全局变量用于存储书籍的编号
int bookIndex=0;
/*开始解析文档*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("开始解析文档");
}
/*结束解析文档*/
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("结束解析文档");
}
/*解析文档中所有的开始标签*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
//开始解析book元素的属性
if("book".equals(qName)){
bookIndex++;
System.out.println("==========开始解析第"+bookIndex+"本书============");
//输出book元素的id属性,已知属性名,根据属性名获取属性值
//System.out.println("book的属性值是"+attributes.getValue("id")); //不知道属性名,只能遍历所有属性
int num=attributes.getLength();
for(int i=0;i<num;i++){
System.out.print("第"+(i+1)+"个属性名是"+attributes.getQName(i));
System.out.println(" 第"+(i+1)+"个属性值是"+attributes.getValue(i));
}
}
if(!qName.equals("book")&&!qName.equals("")){
System.out.println(qName);
} }
/*解析文档中所有的结束标签*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("book".equals(qName)) {
System.out.println("============结束解析第" + bookIndex + "本书==========");
}
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
String s=new String(ch,start,length);
s=s.trim();
if(!s.equals("")){
System.out.println(s);
} }
}

最新文章

  1. PacificA中的租约与失效检测解读
  2. android SDK 更新问题解决
  3. LeetCode:3Sum_15
  4. 10TSQL语言概述-脚本调试-命名规范-天轰穿数据库2014
  5. Spring MVC笔记 使用JdbcTemplate
  6. codeforces div.1 A
  7. Long类型比较大小,long型和Long型区别
  8. 自定义事件解决重复请求BUG
  9. 教你上传本地代码到github转载
  10. Beta冲刺 第二天
  11. [Swift]LeetCode391. 完美矩形 | Perfect Rectangle
  12. vue双向数据绑定的简单实现
  13. Python中join()函数方法
  14. linux下的C++项目创建
  15. cloud配置中心遇到的坑
  16. LeetCode 41 First Missing Positive(找到数组中第一个丢失的正数)
  17. Mac - iPhone屏幕录制
  18. 文本操作 $(..).text() $(..).html() $(..).val()最后一种主要用于input
  19. [C#]跨模块的可选参数与常量注意事项
  20. JAVA基础之——使用idea创建maven项目 以及使用tomcat本地调试springmvc

热门文章

  1. ubuntu 18.04配置静态ip,解决无法上网问题,解决resolv.conf配置文件被覆盖
  2. IDEA集成git方法
  3. IEC2017级_1-2班2次博客作业成绩说明
  4. 转存下链接--- Java awt Swing 进行拖拽实现布局
  5. win10传奇手册CHM打开无法阅读解决
  6. gson的特殊用法
  7. jquery-能拖拽宽度的table
  8. sql语句创建数据表
  9. shell脚本学习-循环
  10. ASP.NET代码调用SQL Server带DateTime类型参数的存储过程抛出异常问题