XML学习总结及实践

XML学习总结及实践

  • xml定义:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
  • xml技术在企业开发中的主要用途
  1. 存储和传输数据
  2. 作为框架的配置文件
  • 使用xml存储和传输数据
  1. 通过程序生成xml
  2. 读取xml中的数据--xml解析
  • xml解析思想
    • Dom解析
      • Document Object Model--文档对象模型
      • 解析思想:将整个xml加载内存中,形成文档对象,所有对xml的操作都是对内存中document对象操作
      • DOM是官方xml解析标准
      • 所有开发语言都支持
    • SAX解析
      •   Simlple API for XML xml简单API
      • 来自开源社区引文当xml文档非常大, 不可能将xml数据加载到内存中
      • 解析思想:一边解析,一边处理,一边释放内存资源
    • STAX解析
      •  The Stream API for XML --XML流API
      • STAX是一种拉模式xml解析方式,SAX是一种推模式xml解析方式
      • 推push模式,由服务器为主导,向客户端主动发送数据
      • 拉pull模式:由客户端为主导,主动向服务器申请数据
    • XML解析开发包
      • JAXP:Sun官方推出,同时支持以上三种解析方式
      • DOM4j:开源框架:支持DOM、Sax、JAXP
      • xml Pull: Android移动设备内置xml解析技术,支持Staxt解析
    • DOM和Sax/STAX的区别
      • XML文档比较复杂,或者随机处理文档中的数据时不建议使用dom4j
      • 相对于DoM,sax和stax是一种更轻量级的方案,内存开销小
      • 但是sax/stax的编程较为复杂,而且无法在读取过程中修改xml数据
      • 当sax和stax读取xml数据时,如果读取到内存的数据不释放,内存中将存在整个xml文档数据,这样类似DOM,就可以进行修改和回写
    • 开发中如何选择解析
      • 如果必须对数据进行更改,并且作为xml将其输出,多数情况下采用dom
      • 其他情况使用sax、stax

DOM4J解析

  1.    主页:【dom4j】https://github.com/dom4j/dom4j
  2. 添加依赖dom4j.jar
  3. 要解析的文档
xml version="1.0" encoding="UTF-8"?>
<struts>
    <action name="login" class="com.coderising.action.LoginAction">
        <result name="success">/jsp/homepage.jspresult>
        <result name="fail">/jsp/showLogin.jspresult>
    action>
    <action name="logout" class="com.coderising.action.LogoutAction">
        <result name="success">/jsp/welcome.jspresult>
        <result name="error">/jsp/error.jspresult>
    action>
struts>

  4.获取所有的节点名称

//1.创建一个解析对象 saxReader
        SAXReader saxReader = new SAXReader();try {
//2. 读取配置文件structs.xml Document read
= saxReader.read(new File("src/com/coderising/action/struts.xml")); //3 获得根节点(struts根节点) Element rootElement = read.getRootElement(); //4.获得根节点下的一级节点 (action 节点) List elements = rootElement.elements(); for (Element element : elements) {
          //5 获取name的属性 Attribute attribute
= element.attribute("name"); //6 如果等于传递进来的actionName if(attribute.getValue().equals(actionName)){//获得属性值
            //进行下一步操作。。。。
} }

 

转载于:https://www.cnblogs.com/Icefog/p/6504370.html

你可能感兴趣的:(XML学习总结及实践)