* 课程回顾:
* 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)
在指定的节点之前添加子节点

* 更新节点的内容

* 获取标签的属性值

传智168期JavaEE就业班 day05-XML 约束与解析的更多相关文章

  1. 传智168期JavaEE就业班 day03-js

    * 课程回顾: * CSS * CSS的简介 * 层叠样式表. * CSS与HTML的结合(4种) * HTML的标签提供了属性 style="CSS的代码" * HTML提供了标 ...

  2. 传智168期JavaEE就业班 day02-css

    * 课程回顾: * HTML语言 * HTML的简介 超文本标记语言. * 是网页最基础的语言. * 都是由标签所组成的. * HTML的基本格式 <html> <head> ...

  3. 传智168期JavaEE就业班 day04-dom

    * 课程回顾: * js语法 * js的动态函数和匿名函数 * js动态函数 Function new Function(); * 匿名函数:没有名称的函数,起个名称 var add = functi ...

  4. 传智168期JavaEE就业班 day01-html

    * HTML * HTML: HyperText Markup Language 超文本标记语言. * HTML是最基础的网页语言. * HTML的代码都是由标签所组成. * HTML的基本格式 &l ...

  5. 成都传智播客java就业班(14.04.01班)就业快报(Java程序猿薪资一目了然)

    这是成都传智播客Java就业班的就业情况,很多其它详情请见成都传智播客官网:http://cd.itcast.cn?140812ls 姓名 入职公司 入职薪资(¥) 方同学 安**软件成都有限公司(J ...

  6. 成都传智播客java就业班和基础班

    传智播客成都Java培训,带你走进Java的世界... 我们有咨询的教育团队,一流的名师指导: 我们是重视基础理论建设,强化高端应用技能: 我们有四大JavaEE项目,海量Android项目: 我们是 ...

  7. 成都传智播客java就业班激情洋溢的青春篮球赛

    为了缓解学员们的学习压力,也为了培养学员们的团队协作精神,5月28日下午,在班主任倪老师和王老师联手带领下,我们1406280ls" style="color:rgb(51,102 ...

  8. 黑马传智JavaEE57期 2019最新基础+就业+在职加薪_汇总

    黑马传智JavaEE57期 2019最新基础+就业+在职加薪 阶段1 语言基础+高级· 1-1-Java基础语法 第14节 数组 111

  9. 传智播客JavaWeb day01 快捷键、XML

    2015-01-14 一直计划着学习java,今天晚上终于下定决心看了下传智播客朴乾老师的javaweb开发视频day01之第一讲,主要内容是开发工具简单介绍.怎么创建工程.Junit的介绍,我是C# ...

随机推荐

  1. EntityFramework6 快速入门教程

    EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕 ...

  2. MIT jos 6.828 Fall 2014 训练记录(lab 4)

    源代码参见我的github: https://github.com/YaoZengzeng/jos Part A: Multiprocessor Support and Cooperative Mul ...

  3. Jetson TK1刷机+配置Mini PCI-e无线网卡

    最近买了台4K电视,觉得可以当显示器用,但没主机,不知怎的想到了Jetson TK1,于是一冲动买了.因为没网线,而Jetson TK1没有无线网卡,所以也折腾了一番,记录一下,给万一也有像我一样没有 ...

  4. CSS 属性 :before && :after的用法,伪类和伪元素的区别

    一::before && :after的用法 :before 如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容.举例说明: .before:before ...

  5. eclipse菜单解释及中英对照《二》

    上篇文章主要介绍了eclipse中每个大的标题下的中英文及其用法. 感谢http://blog.csdn.net/li_jinjian2005/article/details/2831641这个博主. ...

  6. xshell5 启动显示 mfc110.dll msvcp110.dll 未找到问题 解决办法

    1. 安装 Visual C++ Redistributable for Visual Studio 2012 x86版本 注意: 一定要安装x86版本.(xshell5是32位的程序) 微软的官方下 ...

  7. FMDB简单使用

    1.增删改查://注意:dataWithPath中的路径参数一般会选择保存到沙箱中的Documents目录中: //如果这个参数设置为nil则数据库会在内存中创建: //如果设置为@””则会在沙箱中的 ...

  8. Gvim使用

    VIM删除空白行 命令:g/^\s*$/d :g 代表在全文档范围内 ^代表行的开始 \s*代表空白字符 &代表行的结束 d代表删除 用//将3段代码隔开

  9. 我们为什么要使用NodeJS

    科普文一则,说说我对NodeJS(一种服务端JavaScript实现)的一些认识,以及我为什么会向后端工程师推荐NodeJS. "Node.js 是服务器端的 JavaScript 运行环境 ...

  10. Linux ssh登录和软件安装详解

    阿哲Style   Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...