Java Web(一) XML详解

XML简介

XML指可扩展标记语言,也是一种标记语言。类似于HML,但是比HTML更加严格。

XML作用

  • 作为软件配置文件
  • 作为一种小型的”数据库”

XML语法

语法比HTML更加严格。

标签:

标签名不能以数字开头,中间不能有空格,区分大小写。有且仅有一个根标签。

属性:

可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单 双混用。

文档声明:

<?xml version="1.0" encoding="utf-8"?>

encoding="utf-8": 打开或解析xml文档时的编码

注意:

保存xml文档时的编码 和 解析xml文档时的编码要保持一致,才能避免中文乱码问题!

XML解析

程序读取或操作XML文档。

两种解析方式:

  • DOM解析
    一次性把XML文档加载成Document树,通过Document对象得到节点对象,通过节点对象访问xml文档内容包括(标签,属性,文本,注释)

  • SAX解析

DOM解析

工具:Dom4j

读取API:

读取xml文档:
           Document doc = new SAXReader().read("xml文件");
节点:
        nodeIterator(); 所有节点
标签:
        element("名称") 指定名称的第一个子标签对象
        elementIterator("名称"); 指定名称的所有子标签对象
        elements(); 所有子标签对象
属性:
        attributeValue(“名称”) 指定名称的属性值
        attribute("名称") 指定名称的属性对象
          getName() 属性名称
          getValue() 属性值
        atributeIterator() 所有属性对象(Iterator)
        attributes() 所有属性对象(List)
文本:
        getText() 得到当前标签的文本
        elementText("子标签名称") 得到子标签的文本

修改API:

增加:
     DocumentHelper.createDocument() 增加文档
     addElement("名称") 增加标签
     addAttribute("名称",“值”) 增加属性
修改:
     Attribute.setValue("值") 修改属性值
     Element.addAtribute("同名的属性名","值") 修改同名的属性值
     Element.setText("内容") 修改文本内容
删除:
     Element.detach(); 删除标签
     Attribute.detach(); 删除属性
在dom4j中使用xPath技术

当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦。

Xpath作用:主要是用于快速获取所需的节点对象。

  • 导入xPath支持jar包 jaxen-1.1-beta-6.jar
  • 使用xpath方法
    • List selectNodes(“xpath表达式”); 查询多个节点对象
    • Node selectSingleNode(“xpath表达式”); 查询一个节点对象
SAX解析

原理:加载一点,读取一点,处理一点。对内存要求比较低。

SAX解析工具

该工具由Sun公司提供的,内置在JDK中。org.xml.sax.*

核心API:
SAXParser类:用于读取和解析XML文件对象。
parse(File f, DefaultHandler dh)方法: 解析xml文件
- 参数一: File:表示 读取的xml文件。
- 参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类

例如:{
         1.创建SAXParser对象
              SAXParser parser=SAXParserFactory.newInstance().newSAXParser();
                  2.调用parse方法
   parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
}   
    [一个类继承class 类名(extends DefaultHandler) 在调用是创建传进去
    DefaultHandler类的API:
      void startDocument() : 在读到文档开始时调用
      void endDocument() :在读到文档结束时调用
      void startElement(String uri, String localName, String qName, Attributes attributes) :读到开始标签时调用
      void endElement(String uri, String localName, String qName) :读到结束标签时调用
      void characters(char[] ch, int start, int length) : 读到文本内容时调用

DOM解析 VS SAX解析

这里写图片描述

xml中文乱码问题

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Honyelchak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值