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、

  • 相关阅读:
    ASP.NET 2.0 X64 引起的问题
    .net 俱乐部7月份资料下载 .net 开源项目
    用schemaSpy制作数据库文档
    IbatisNet支持2.0的版本Release 发布了
    Introduction to Model Driven Development with AndroMDA
    开放源代码与.NET应用程序平台的性能测试
    sqlserver 2000/2005 Ambiguous column error错误解决办法
    ASP.NET 2.0 中 Web 事件
    使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
    Working with Windows Workflow Foundation in ASP.NET
  • 原文地址:https://www.cnblogs.com/loong996/p/8168963.html
Copyright © 2011-2022 走看看