xml 解析

来源:互联网 发布:淘宝详情页文案怎么写 编辑:程序博客网 时间:2024/05/01 23:20
xml加强
1) 讲解jaxp的小练习
2)jaxp进行sax解析
3) Junit单元测试
4) DOM4J基本使用
5) xpath基本使用(更加方便读取xml)
6) schema约束
 一、jaxp进行sax解析
dom解析:一次性读到内存,占用内存比较大
sax解析:sax的出现就是为了弥补dom解析的缺陷(内存消耗大),sax解析内存消耗小!!!
 读取一部分,解析一部分

 sax:  Simple Api(for) Xml,来自于开源社区,已经纳入了javase的规范
sax的api在jdk:   org.xml.sax.*

 sax解析原理:读到xml文档的某部分内容,就会触发对应的事件处理代码。
案例:
1)读取xml指定内容
2)读取xml内容,封装成对象(有难度,必须练习,多理解!!)


sax核心的api:
1)创建SAXParserFactory对象
2)通过SAXParserFactory对象得到SAXParser对象
3)通过SAXParser对象得到XMLReader解析器
4)在XMLReader解析器注册事件监听器(ContentHandlder接口)
5) 使用XMLReader的parse方法进行读取xml文件
ContentHandlder接口常用方法
startDocument(): 文档开始触发
startElement(): 读到元素开始触发
characters(): 读到文本内容触发
endElement(): 读到元素结束触发
endDocument(): 读到文档结束触发

二、Junit单元测试(必须掌握,使用它)
开发步骤:
1)建立一个Junit Test Case的类
2)直接在每个方法中写测试逻辑
3)运行测试方法

如何写Junit的测试方法?
1)方法顶部一定要加上@Test注解
2)方法必须是public修饰,不能有返回值,不能有参数,可以抛出异常

如何查看Junit的测试结果?
看junit导航条
绿色:代表测试通过
红色:代表测试不通过

如何运行junit测试方法?
1)双击方法,右键“junit test”运行!(运行一个方法)
2)双击类,右键“junit test”运行!(运行类中多个方法)
3)双击项目,右键“junit test”运行!(运行项目中多个方法)
如何判断结果?
Assert类: 
assertEquals()
assertSame()
assertTrue()
assertFalse()

五个常用注解
@Test
@Before
@After
@BeforeClass
@AfterClass

三、DOM4J基本使用(必须练习)
dom4j:用过jaxp,使用dom4j可以更加简单地操作xml(也是基于dom解析原理的工具)

1)读取xml文件:
//1)创建SAXReader对象
SAXReader reader = new SAXReader();
//2)读取xml文件
Document doc = reader.read("src/exam.xml");

查询:
元素相关的:
element("name")
elements("name");
.......
属性相关的:
attribute("name")
attributeValue("name")
.....
文本相关的:
getText()


2)写出xml文件
//1)创建一个XMLWriter对象
XMLWriter writer = new XMLWriter(
new FileOutputStream("src/exam.xml"));
//2)写出xml文件
writer.write(doc);
//3)关闭流
writer.close();

创建或修改:
addElement("name")  添加元素
addAttribute("name","value");// 添加属性
setText("value")  添加文本

删除:
detach()  
getParent().remove(elem);
四)xpath基本使用(很方便)
xpath一句话概括:非常方便的读取xml节点。
遇到了xml的层次结构非常深的时候,使用dom4j获取时很麻烦的!!这时就可以使用xpath!!

核心的方法:
List list = document.selectNodes( "//foo/bar" );  查询多个节点
                Node node = document.selectSingleNode( "//foo/bar/author" ); 查询一个节点

xpath的常用语法:
/     代表根(从根开始找)
//    所有子节点(不分层次)
作业:改造jaxp版本的练习。改造为dom4j+xpath的版本

五、schema约束(看懂即可)
重点:明白名称空间是什么?用来干什么?

       目标:能够看着scheme约束来学有效的xml文件

重点:使用名称空间导入schema文件

html:body
life:body
   总结:
1)使用jaxp的sax解析
2)junit单元测试
3)dom4j+xpath
4)schema约束 


原创粉丝点击