黑马程序员技术交流社区

标题: 【石家庄校区】就业班_JavaEE_day12_XML [打印本页]

作者: 风中的消逝    时间: 2018-5-21 15:40
标题: 【石家庄校区】就业班_JavaEE_day12_XML
本帖最后由 小石姐姐 于 2018-6-7 10:22 编辑

就业班_JavaEE_day12_XML
一 xml基础语法
    标签必须有开始和结束,成对出现。
    标签中的属性必须用引号
    区分大小写
    申明必须在首行首列  <?xml version="1.0" encoding="UTF-8"?>
    以上语法与html都不同。
    <!<CDATA[ 原样输出的内容    ]>>
    <!-- 注释 -->
    主要用于软件配置和数据交换
   
二 xml的二种解析方式: dom和sax
        dom
            定义  一次性加载到内存中,形成树形结构。
            缺点  如果文件过大,可能造成内存溢出
            优点  方便增删改  
       sax
            定义   基于事件驱动、逐行解析。
            缺点  不能实现增删改操作
            优点   不会造成内存溢出; 方便查询操作。
            
三 xml主流解析技术 :dom4j + xpath
       A 读取XML
          1 创建解析器对象
          SAXReader sr = new SAXReader();
          2.得到document对象
          Document document = sr.read(xml文件路径);
          3 通过xpath选择节点
            xpath表达式写法。 /A 第一层   //A  不分层级 /A[1] /A[last()] 得到第一个和最后一个
             //A[@id]   得到有id属性的A标签
            //A[@id='name'] 得到有ID属性并且值=name的A标签
            List<Node> list = document.selectNodes();
            Node node = document.selectSingleNode();
            可以将node强制为Element
          4 获取元素的text或者属性值
             String element.getText();
             String element.attributeValue(属性名)
            
        B 修改并回写(在某个标签元素的末尾添加子元素)
             1 创建解析器对象
                SAXReader sr = new SAXReader();
             2.得到document对象
                Document document = sr.read(xml文件路径);
            3 通过xpath选择父节点
            4.在父节点的末尾添加子元素
                addElement("标签名称") 返回一个Element
                Element sex = 父节点.addElement("sex");
            5.设置第4步得到的element的文本
                setText("文本内容");
            6. 将内存中的document对象回写到xml中。
                XMLWriter writer = new XMLWriter(outputstream 回写文件位置 ,outputformat 文件格式);
                outputformat类提供了二种文件格式,选择 createPrettyPrint() 带有缩进。
                writer.write(document);
                writer.close();
        
        C修改并写回XML(不再末尾添加子元素)
             1 创建解析器对象
                SAXReader sr = new SAXReader();
             2.得到document对象
                Document document = sr.read(xml文件路径);
            3 通过xpath选择父节点
            4.需要通过DocumentHelper类来创建一个子元素
                Element school = DocumentHelper.createElement("school");
            5.设置第4步得到的element的文本
                setText("文本内容");
            6 得到父节点下的所有子元素
                List<Element> list = 父节点.elements();
            7 将子元素插入指定位置
                list.add(index,子元素);
            8. 将内存中的document对象回写到xml中。
                XMLWriter writer = new XMLWriter(outputstream 回写文件位置 ,outputformat 文件格式);
                outputformat类提供了二种文件格式,选择 createPrettyPrint() 带有缩进的。
                writer.write(document);
                writer.close();
   
四 xml约束
     dtd和schema

     二者区别
             1.DTD语法是自成一体的.Schema语法就是XML的语法.
             2.Schema的语法就是XML的语法所以更容易被解析器解析.
             3.Schema支持名称空间.
             4.Schema有比DTD更加强大的语义和语法的约束.
     名称空间:
     一个XML只能引入一个DTD约束文档.而使用Schema约束XML文档,一个XML可以引入多个Schema.
     名称空间是为了解决多个schema中的同名冲突,类似于java中的package.通过名称空间区分 标签或属性来自于哪个文档的



作者: Yin灬Yan    时间: 2018-5-21 15:50
我来占层楼啊   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2