zoukankan      html  css  js  c++  java
  • 2018/1/1 XML和DOM、SAX解析

    1、XML (1)描述带关系的数据(软件的配置文件)
    (2)数据的载体(小型的“数据库”)
    2、语法:
    标签:
    标签名不能以数字开头,中间不能有空格,区分大小写。有且仅有一个根标签。
    属性:
    可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单双混用。
    文档声明:
    <?xml version="1.0" encoding="utf-8"?>
    encoding="utf-8": 打开或解析xml文档时的编码
    注意:
    保存xml文档时的编码 和 解析xml文档时的编码要保持一致,才能避免中文乱码问题!

    <student></student> 开始标签 标签体内容 结束标签
    1)<student/> 或 <student></student> 空标签。没有标签体内容
    2)xml标签名称区分大小写。
    3)xml标签一定要正确配对。
    4)xml标签名中间不能使用空格
    5)xml标签名不能以数字开头
    6)注意: 在一个xml文档中,有且仅有一个根标签
    3、XML解析工具

    DOM解析原理:
    1)JAXP (oracle-Sun公司官方)
    2)JDOM工具(非官方)
    3)Dom4J工具(非官方)
    三大框架(默认读取xml的工具就是Dom4j)
    SAX解析原理:
    1)Sax解析工具(oracle-sun公司官方)
    4、DOM解析原理:一次性把xml文档加载成Document树,通过Document对象得到节点对象,通过节点对象访问xml文档内容(标签,属性,文本,注释)。
    Dom4j工具(基于DOM解析原理):
    读取xml文档:
    Document doc = new SAXReader().read("xml文件");
    节点:
    nodeIterator(); 所有节点
    标签:
    element("名称") 指定名称的第一个子标签对象
    elementIterator("名称"); 指定名称的所有子标签对象
    elements(); 所有子标签对象
    属性:
    attributeValue(“名称”) 指定名称的属性值
    attribute("名称") 指定名称的属性对象
    getName() 属性名称
    getValue() 属性值
    atributeIterator() 所有属性对象(Iterator)
    attributes() 所有属性对象(List)
    文本:
    getText() 得到当前标签的文本
    elementText("子标签名称") 得到子标签的文本
    5、
    写出内容到xml文档
    XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
    wirter.write(Document);
    修改xml文档的API
    增加:
    DocumentHelper.createDocument() 增加文档
    addElement("名称") 增加标签
    addAttribute("名称",“值”) 增加属性
    修改:
    Attribute.setValue("值") 修改属性值
    Element.addAtribute("同名的属性名","值") 修改同名的属性值
    Element.setText("内容") 修改文本内容
    删除
    Element.detach(); 删除标签
    Attribute.detach(); 删除属性
    6、在dom4j中如何使用xPath技术
    1)导入xPath支持jar包 。 jaxen-1.1-beta-6.jar
    2)使用xpath方法
    List<Node> selectNodes("xpath表达式"); 查询多个节点对象
    Node selectSingleNode("xpath表达式"); 查询一个节点对象
    xPath语法
    / 绝对路径 表示从xml的根位置开始或子元素(一个层次结构)
    // 相对路径 表示不分任何层次结构的选择元素。
    * 通配符 表示匹配所有元素
    [] 条件 表示选择什么条件下的元素
    @ 属性 表示选择属性节点
    and 关系 表示条件的与关系(等价于&&)
    text() 文本 表示选择文本内容
    7、 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) : 读到文本内容时调用
    8、

  • 相关阅读:
    Web 2.0网站命名的7个建议
    梦猪课堂视频系列
    计算机英文术语完全介绍
    PPT高手的思路
    在线RSS阅读器大比拼
    【百度现有服务】
    转载VFW编程实例(详)
    实现MFC扩展DLL中导出类和对话框 (转)
    Windows下编译 OpenSceneGraph(转)
    OSG静态编译 (转)
  • 原文地址:https://www.cnblogs.com/loong996/p/8168963.html
Copyright © 2011-2022 走看看