zoukankan      html  css  js  c++  java
  • Java XML

    可扩展:完全自定义,按照自己的规则来定义

    标记:能让计算机认识的信息符号

      书本教材的编号======>证明书是你的

      身份证号码唯一的======>证明自己的身份

    XML:

    1.可扩展标记语言

    2.符号w3c标准

    3.着重数据的保存,不着重数据的显示

    4.无需预编译功能

    W3C:国际组织,万维网联盟组织,规定了xml,html,css,js,数据库...一系列的规范

    以xml文件作为后缀名的文件,我们称之为xml文件

    注意点:

    1.根节点:在当前文件中只能有一个

    2.所有的节点都是成对出现的

    <学校>开放标签

    </学校>闭合标签

    3.所有的节点必须是正确的嵌套

    4.xml文件中,严格区分大小写

    xml的节点结构,我们称之为DOM树===>整个xml节点结构像一个倒挂的树

    DOM:(Document Object Model)==>文档对象模型

    特殊字符的转换

    >   &gt;

    <         &lt;

    ''        &apos;

    "         &quot;

    &         &amp

    (空格)   &nbsp;

    DTD文件(Document Type ):针对于xml文件的约束文件

    <!ELEMENT package (result-types?, interceptors+, default-interceptor-ref*)>

    ELEMENT:元素package

    ()里面的内容,称之为子元素

    ,:括号里元素的前后位置

    ?:子元素最多出现一次

    +:子元素至少出现一次

    *:子元素至少出现0次,最多出现N次

    <!ATTLIST package
    name CDATA #REQUIRED
    extends CDATA #IMPLIED
    namespace CDATA #IMPLIED
    abstract CDATA #IMPLIED
    strict-method-invocation CDATA #IMPLIED
    externalReferenceResolver NMTOKEN #IMPLIED
    >

    ATTLIST:package元素中可以包含的属性

    name,extends属性名

    CDATA:Character  Data字符数据==>解析器不会解析的文本

    PCDATA:Parsed  Character  Data被解析的字符数据====>解析器会解析的文本

    #REQUIRED:属性是必须

    #IMPLIED:属性不是必须

    Schema  可以替换DTD,文件的扩展名是xsd(xml Schema Definition)

    解析xml文件

    1.DOM:基于xml文档树的解析,把文件中的内容全部读到内存中,占内存,消耗资源多

    2.SAX:基于事件的解析,不会把文件中的全部内容读到内存中,占用资源少

    3.JDOM:针对于java的特定模型!满足2 8原则!自身没有解析器,依赖于SAX2的解析器

    4.DOM4j:是JDOM的一个分支,开放源码.性能优异,功能强大,依赖于SAX解析器

    解析xml文件的思路:

    1.把xml文件理解成一个DOM树

    2.找到DOM树的根节点

    3.然后根据需求去遍历

    4.找到自己想要的节点

    任务:

    实现对xml文件中节点(元素)的增删查改

    获取dom树:

    SAXReader reader=new SAXReader();//创建解析器对象

    Document document = reader.read(file);//获取dom树

    Element root= document.getRootElement();//获取根节点

    把内存中的数据保存在xml文件中,持久化数据:

    //创建输出流格式化对象

    OutputFormat format=OutputFormat.createPrettyPrint();

    format.setEncoding("设置编码格式");

    XMLWriter writer=new XMLWriter(new FileWriter(file), format);

    新增节点:

    Element classElement = root.addElement("class");//在根节点下创建一个新的节点class

    classElement.addAttribute("name", "四班");//给class节点新增属性,

                                                           name:属性名,四班:属性值

    Element studentElement = classElement.addElement("student");//再次增加子节点                                                                                      student

    studentElement.addAttribute("name", "啦啦4");// 给student节点新增属性

    studentElement.addText("有点浪");//新增文本节点

    删除节点:

    Iterator<Element> classes = root.elementIterator();//从根节点中获取所有的子节点

    while(classes.hasNext()){

    Element clazz = classes.next();//获取具体的一个子元素

    if(clazz.attributeValue("name").equals(className)){

    //删除节点,不允许自杀,必须通过父节点删除
    classes.remove();

    }

    }

    修改节点:

    clazz.setAttributeValue("location", newClassName);//属性为location的值修改为新的                                                                   值

    查询节点:

    System.out.println("班级名称:"+clazz.attributeValue("name"));

    //如果结点中有文本节点

    if(!student.getTextTrim().equals("")){

    System.out.println("这个学生的描述信息是:"+student.getTextTrim());

    }

  • 相关阅读:
    Seafile V4.1 安装笔记
    mysql int(3)与int(11)的区别
    python命令行参数处理模块 optparse 使用参考
    Python标准库 urllib2 的使用
    Python默认模块 os和shutil 实用函数
    ApacheBench 使用教程
    ThinkPHP中PATHINFO模式优化
    Perl中的特殊内置变量详解
    Perl内置变量速查表
    eclipse jetty debug
  • 原文地址:https://www.cnblogs.com/s10-/p/8242853.html
Copyright © 2011-2022 走看看