• 传智168期JavaEE就业班 day05-XML 约束与解析


    * 课程回顾:
    * DOM解析HTML简介
    * DOM 文档对象模型
    * 解析器

    * document对象
    * getElementById("id的值"); 返回一个元素(标签)对象
    * getElementsByName("name的名称"); 返回数组
    * getElementsByTagName("标签名称"); 返回数组

    * 创建元素对象
    document.createElement("元素名称");
    document.createTextNode("文本内容");
    appendChild(node); 父节点调用该方法
    insertBefore(new,old) 在指定的节点之前添加子节点

    * Element对象
    * 操作属性 setAttribute("","") 设置或者修改属性
    getAttribute("属性名称");
    removeAttribute("属性名称");

    * 获取子节点
    getElementsByTagName("子节点的元素名称");

    * Node节点对象
    * nodeName nodeType nodeValue
    * parentNode 父节点(*****)

    * appendChild(node); 父节点调用该方法
    * insertBefore(new,old) 在指定的节点之前添加子节点
    * replaceChild(new,old) 替换节点
    * removeChild(node) 删除节点
    * cloneNode(true或者false) 复制节点

    * innerHTML 获取和设置文本内容
    <span></span>

    * 事件
    * onclick 点击事件
    * ondblclick 双击事件
    * onload 加载事件
    * onfoucs 获取焦点
    * onblur 失去焦点
    * onchange 改变事件


    * onsubmit 控制表单的提交

    =============================================================================================================
    * onsubmit事件
    * 控制表单提交。 需要把onsubmit作用在表单上 <form onsubmit="">
    * 值的写法:onsubmit="return run()"
    * run()必须要有返回值,必须返回true或者false。
    * 如果返回是true,表单可以提交,如果返回false,表单不能提交。如果没有返回值,默认是表单提交。
    * run()的逻辑写什么?
    * 表单的校验。

    * 可以通过js提交表单。
    // 通过id获取form
    // var form = document.getElementById("formId");
    // 通过form的name的属性获取表单
    var form = document.form1;
    //var name = document.form1.username.value;
    //alert(name);

    // 设置提交的路径
    form.action = "success.html";
    form.method = "get";
    // 提交表单
    form.submit();


    * XML(*****)

    * XML的简介
    * XML 可扩展的标记语言。(和HTML非常类似的)
    * 可扩展的。
    * 自定义的标签。

    * XML传输数据,HTML是显示数据。

    * XML的版本: XML1.0(使用该版本) XML1.1(不向下兼容)
    * 做什么用?
    * 描述有关系的数据

    * 应用
    * 作为配置文件。

    * 可以在系统与系统之间进行数据的传输。
    * webserivice soap XML封装数据
    * json 和XML概念

    * XML的语法
    * 文档声明(*****)
    * 写法: <?xml version="1.0" ?>
    * 文档声明必须出现在xml文件的第一行和第一列的位置。

    * 属性:
    * version="1.0" XML的版本 (必须写)
    * encoding="UTF-8" 编码集 (可选的)
    * standalone="yes或者no" 代表xml的文件是否是独立的。(如果是no,不独立,可以引入外部的文件)(可选的)
    * 因为不写该属性,可以引入外部的文件。

    * 乱码会伴随你们一生?
    * 产生的原因:保存文件时和打开文件时采用的编码不一致。
    * 解决办法:保存文件可打开文件采用的编码一致就ok。(MyEclipse不会产生乱码问题)


    * 元素(***)
    * 开始标签和结束标签。
    * 包含标签主体: <abc>文本</abc>
    * 不包含标签主体: <abc/>

    * 不能交叉嵌套
    * 只能有一个根元素(必须有,并且只能有一个)

    * 命名规范:
    * 区分大小写 错误的:<a></A> 代表两个标签
    * 不能以数字和-中划线开头 错误的:<1a> <-a>
    * 不能以XML(Xml XML xml)开头 错误的:<xmlaa>
    * 不能包含空格和冒号。

    * 属性(***)
    * 自定义:命名规范同上。
    * 在同一个元素上,不能有相同的属性。(*****)
    * 可以使用双引号或者单引号。


    * 注释(*)
    * 和HTML的注释相同
    <!-- XML的注释 -->

    * 注释不能嵌套。

    * 特殊字符
    * < &lt;
    * > &gt;
    * & &amp;
    * " &quot;
    * ' &apos;

    * CDATA区
    * 把标签中的内容作为字符串。
    * 语法:
    <![CDATA[
    内容:当成字符串
    ]]>

    * PI(处理指令)(忘了)
    * 替换HTML


    * XML的约束
    * DTD
    * schema

    <myspring>
    <bean>hello.java</bean>
    <猫/>
    </myspring>

    * 格式良好的XML:遵循语法规范。
    * 有效的XML:有约束。


    * DTD的约束
    * 快速入门
    * 快速入门的步骤:
    * 需要出现哪些标签?
    * 在DTD的文件中编写元素
    <!ELEMENT 元素名称 元素类型>
    * 判断元素是否是复杂还是简单元素?
    * 如果是简单元素:(#PCDATA) 代表是字符串
    * 如果是复杂元素:(子节点)

    * 需要在book.xml引入DTD的文件
    * <!DOCTYPE 根节点 SYSTEM "DTD文件的地址">

    * DTD与XML文档的关联方式
    * 可以在XML的文件中直接书写DTD的代码。(经常使用)
    <!DOCTYPE 根节点 [
    DTD的代码
    ]>

    * 引入本地的DTD文件(经常使用)
    <!DOCTYPE 根节点 SYSTEM "DTD文件的地址">

    * 引入网络上的DTD文件
    <!DOCTYPE 根节点 PUBLIC "DTD文件名称" "DTD文件的地址">


    * 元素定义
    * 语法:<!ELEMENT 元素名称 元素类型>

    * (#PCDATA) 字符串
    * EMPTY 空
    * ANY 任意的
    * (子元素)

    * 子元素:
    * 子元素之间的关系
    * , 子元素出现是有顺序的
    * | 子元素只能出现一个

    * 子元素出现的次数
    * + 子元素出现1次或多次
    * * 子元素出现0次或多次
    * ? 子元素出现0次或1次

    <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

    <MYFILE>
    <TITLE></TITLE>
    <AUTHOR></AUTHOR>
    <EMAIL></EMAIL>
    <TITLE></TITLE>
    <AUTHOR></AUTHOR>
    <EMAIL></EMAIL>
    <TITLE></TITLE>
    <AUTHOR></AUTHOR>
    <EMAIL></EMAIL>
    </MYFILE>



    * 属性定义(AttributeList)
    * 写法: <!ATTLIST 元素名称
    属性名称 属性类型 属性约束
    属性名称 属性类型 属性约束
    >
    * 属性类型
    * CDATA 字符串
    * 枚举(没有提供关键字) (男人|女人)
    * ID 代表唯一的值,不能只写数字

    * 属性的约束
    * #REQUIRED 必须出现的
    * #IMPLIED 可选的
    * #FIXED 固定值 #FIXED "值"
    * 默认值(不用)

    * 实体定义(用的不多)
    * <!ENTITY 别名 "值" >
    * 需要在xml中引入别名,浏览器打开文件后,在引入的位置上显示值的。



    * 解析XML
    * 解析XML的方式有哪些呢?
    * 常用的有两种?DOM和SAX
    * 区别:
    DOM解析XML
    * 在内存中形成树状结构
    * 缺点:如果文档过大,容易产生内存溢出的问题。
    * 优点:方便做增删改的操作

    SAX解析
    * 基于事件驱动,边读边解析
    * 优点:不会产生内存溢出问题。
    * 缺点:不能做增删改操作。(DOM4J在内存生成树状结构)

    *,只能使用DOM方式,如果SAX,只能做查询。
    * DOM4J(*****) JAXP SUN提供的
    * 想做增删改 企业都在用。DOM4J提供的
    * 全部都可以做。
    * JDOM(不讲了)


    * JAXP的解析HTML
    * DOM
    * DocumentBuilderFactory :解析器工厂类
    * DocumentBuilder 获取解析器对象
    * 解析XML(Document parse(String uri) )
    // 获取解析器工厂类
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 获取解析器对象
    DocumentBuilder builder = factory.newDocumentBuilder();
    // 解析XML的文档,返回document对象
    Document document = builder.parse("src/book2.xml");


    * 回写
    * 获取回写的工厂类
    * 获取回写对象
    * 调用回写的方法进行回写。
    // 创建回写类的工厂
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    // 获取回写类
    Transformer transformer = transformerFactory.newTransformer();
    // 调用回写的方法
    transformer.transform(new DOMSource(document), new StreamResult("src/book2.xml"));



    * 作业:Node insertBefore(Node newChild, Node refChild)
    在指定的节点之前添加子节点


    * 更新节点的内容


    * 获取标签的属性值

  • 相关阅读:
    给微信小程序添加简单小动画
    微信小程序封装wx.request方法
    微信小程序项目,实现图书列表渲染,以及图书详情跳转
    总结一下微信小程序中父子兄弟组件传递数据
    给自己看的flex布局方法
    moment.js踩坑
    Vue项目的一些优化策略
    vue中按需使用第三方插件
    js基础复习2,class和原型
    js基础复习1
  • 原文地址:https://www.cnblogs.com/ys-wuhan/p/5799649.html
Copyright © 2020-2023  润新知