(七)XML

1  XML标签:Extend Markup Language 可扩展标记语言

2 作为软件的配置文件,自定义标签,三大框架配置文件

3 浏览器解码 <?xml version="1.0" encoding="gbk"?>

4 原样输出:<_student id="1">student

<![CDATA[ <name>卡卡</name><name>蔻蔻</name> ]]>

   </_student>

5 在一个xml文档中,只允许有且仅有一个根标签

6 xml解析方式

   DOM解析:xml解析引擎一次性把整个xml文件加载进内存,在内存创建一颗document树。

          问题:大文件的话,使用dom解析效率比较低,甚至会导致内存溢出。

          编码方式: 面向对象编程方式

   SAX解析:原理加载一点,读取一点,处理一点。优势:占用的内存比较小。

                          编程方式:基于事件编程方式。

7  使用dom4j读取xml的标签

    

   SAXReader reader = new SAXReader();

   Document doc = reader.read("contact.xml");

     getRootElement(): 获取根标签
     getName(): 获取标签名称
     element("名称"): 获取第一个指定名称的子标签

               elements("名称"): 获取指定名称的所有的子标签

               elements(): 获取所有子标签

                conElem.attributeValue("id")

                conElem.attribute("id")

                getText(): 获取标签的文本内容

使用dom4j写出xml

   OutputFormat format = OutputFormat.createPrettyPrint()

    XMLWriter writer = new XMLWriter(outStream,format );

    format.setEncoding("gbk");

    writer.write(doc);

9 修改xml

    DocumentHelper.createDocument(); 添加文档对象

    addElement(name) 

    addAttribute(name,value) 

    Attribute.setValue(value)

    Element.addAttribute("name","value"); 

    Element.setText(value) 

    Element.getParent().remove(elment) 

    Element.detach() 

    Attribute.getParent().remove(attri) 

    Attribute.detach()  


10  在xml文件中,空格和换行会作为xml的内容被解析到。

11 XPath的作用

XPath主要是用于快速查找到XML文档中的节点的技术。

12
   /   绝对路径  
   //  相对路径   
   *   通配            选择所有元素
   [ ]   条件       例如 /AAA/BBB[1] 选择第一个BBB子元素
   @   属性         选取属性

13 sax解析

    SAXParser parser = SAXParserFactory.newInstance;

    parser.parse(new File("contact.xml"), myHandler);

    继承DefaultHandler

  重写  startDocument()

      startElement()

     endElement()

     characters()

14

 

DOM解析

SAX解析

原理

一次性加载进内存,构造docuemnt数,内存占用比较大

加载一点,读取一点,内存占用相对小

读取顺序

可以读取XML文件任意位置信息,甚至往回读

只能是从上往下依次读取,不能往回读

操作方式

可以进行查询,也可以进行修改

只能查询

编码方式

面向对象编程方式,更加适合java开发者

基于事件编程方式,相对java开发难理解

15 xml约束

 

DTD约束:相对简单的,数据类型简单的

    场景:hibernate  struts2

Schema约束:功能很强大,数据类型非常丰富。schema的出现时为了替代DTD的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值