JavaWeb

1.5 JavaScript基础-ECMAScript部分,JavaScript语法、基础对象

                     概念:javascript是客户端脚本语言,运行在客户端浏览器中,无需编译,可直接被浏览器解析执行。

                     功能:增强用户和html界面的交互过程,控制html元素,让界面有一些动态效果。

                     javascript=ECMAScript+JavaScript特有的(BOM和DOM)

                     基本语法:和html结合的方式。内部js:<script>标签中的内容就是js代码。外部js:定义script标签,通过src属性引入外部js文件。script可在html文件中任意位置并可以有多个,但是定义位置影响执行顺序。

                     js注释://(单行注释),/**/(多行注释)

                     js数据类型:原始数据类型:number、string、boolean、null、undefined;引用数据类型:对象

                     js变量:存储数据的内存空间;js是弱类型语言,开辟变量存储空间,不定义数据类型,可存储任意类型的数据;语法:var 变量名 = 初始化值;typeof()运算符获取变量的类型

                     js运算符:一元运算符:++,--,+(正号),-(负号);算数运算符:+,-,*,/,%,++,--;赋值运算符号:=,+=,-=,*=,/=,%=;比较运算符:==,===(值和类型全等),!=,>,<,>=,<=;逻辑运算符:&&,||,!;三元运算符:表达式?值1:值2。

                     js流控制语句:if...else;switch...case(可接受任意类型数据);while;do...while;for;

                     js对象:

                            String对象:(创建:var str = new String("字符串")、var str = "字符串";方法:blod()、fontcolor("red")、concat(str)、charAt()、indexOf();属性:length)

                            Function对象(定义:var 方法名 = function(形参){方法体};调用:方法名称(实际参数列表);特点:调用只和方法名称有关,和参数列表无关;方法声明中隐藏了内置对象arguements(是一个数组),封装了所有的参数;js中不存在重载,可以通过arguements来模拟重载);

                            Array对象:(创建方式:var arr = new Array(元素列表)、var arr = new Array(元素长度)、var arr = [元素列表];方法:concat、join、pop、push、reverse();属性:length;特点:元素类型可不同,长度可变);

                            Date对象(定义:var date = new Date();常见方法:toLocalString()、getTime());

                            Math对象:(创建:无需创建,直接使用,Math.方法名();方法:random()、ceil(x)、floor(x)、round(x);属性:PI(圆周率)、E(常量e));

                            RegExp对象(正则表达式,创建:var reg = new RegExp("正则表达式")、var reg = /正则表达式/;方法:test(参数));

                            Global对象:(特点:全局对象,方法无需对象可直接调用;调用:方法名();方法:encodeUTI()、decodeURI()、parseInt()、eval(){将字符串当作js脚本来执行});

1.6 JavaScript-BOM、DOM事件

                     BOM:浏览器对象模型

                            Navigator:浏览器对象,获取浏览器的信息。(属性:appName 返回浏览器名称)

                            Screen:屏幕对象,包含客户端屏幕信息。属性:width-屏幕宽度,length-屏幕高度

                            Location:地址栏对象,包含当前URL信息。创建:window.location;location;方法:reload()-刷新、href()-设置或返回完整url;

                            History:包含浏览器窗口访问过的URL。创建:window.history;history;方法:back()-加载前一个URL、forward()-加载后一个URL、go(参数{正数表示前进几个界面;负数表示后退几个界面})-加载某个具体界面;属性:length-url数量

                            Window:窗口对象,表示浏览器打开的窗口。

                                   方法:

                                   alert()-显示包含消息和确认按钮的弹出框、

                                   confirm()-显示包含消息和确认按钮与取消按钮的弹出框,确认返回true,取消返回false;

                                   prompt()-显示提示用户输入的对话框,返回值为用户输入内容、

                                   close()-关闭浏览器窗口、

                                   open(arg1,arg2,arg3,arg4)-打开浏览器窗口,参数可选,arg1传URL,arg2可以为"",arg3传入窗口特征宽高等,arg4可省略、

                                   setTimeOut(code,millisec)-指定毫秒后调用函数或表达式

                                   clearTimeout(id_of_settimeout): 取消由 setTimeout() 方法设置的 timeout,传入某个定时器的id用来取消指定的定时器.

                                   setInterval(code,millisec): 按照指定的周期(以毫秒计)来调用函数或计算表达式。

                                   clearInterval(id_of_settimeout): 取消由 setInterval() 设置的 timeout。

                                   属性:

                                   获取其他BOM对象:History、location、Navigator、Screen

                                   获取DOM对象:document

                                   特点:无需创建,直接window.方法名()可直接使用,window可省略

                     DOM:文档对象模型,使用对象的属性或方法操作文档;DOM已将html中的标签、属性、文本内容封装为对象

                            Document:整个文档对象。

                                   创建:window.document、document;

                                   方法:

                                          write("html代码")-向页面输出变量html代码;

                                          getElementById() : 根据id属性值获取元素对象,id属性值一般唯一

                                          getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组

                                          getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组

                                          getElementsByName(): 根据name属性值获取元素对象们。返回值是一个数组

                                          创建其他DOM对象:createAttribute(name)、createComment()、createElement()、createTestNode()

                                   Element:标签对象

                                          创建:通过document来获取和创建,document.createElement()

                                          方法:先通过document来获取元素,然后通过元素进行操作

                                                 getAttribute(attributename): 获取指定的属性

                                                 setAttribute(attributename,attributevalue): 给元素添加属性

                                                 removeAttribute(attributename): 移除指定名称的属性

                                                 注意: 不能删除value

                                                 getElementsByTagName(标签名): 兼容性好,获取标签下面子标签的唯一有效方法

                                   Attribute:首先获取标签对象

                                   Text:首先获取标签对象

                                   Comment:注释对象

                                   Node:节点对象

                                          特点:所有dom对象都可看作是一个节点

                                          属性:

                                                 nodeName:节点名称;nodeType:节点类型(标签、属性、文本的nodeType分别为1,2,3);nodeValue:节点的value值;

                                                 parentNode:父节点属性;childNodes:所有子节点;fiestChild:第一个子节点;lastChild:最后的子节点;

                                                 nextSibling:给定节点的下一个节点:previousSibling:给定节点的上一个节点

                                   CURD_DOM树

                                          查找节点:getElementById(),通过节点id,查找节点

                                          添加节点:appendChild():向节点的子节点列表的结尾添加新的子节点

                                          插入节点:insertBefore(newNode, oldNode): 向oldNode节点前插入一个新节点.通过父节点添加

                                          删除节点:removeChild():删除(并返回)当前节点的指定子节点

                                          替换节点:replaceChild(newNode, oldNode):用新节点替换一个子节点。通过父节点替换

                                          复制节点:cloneNode(true): 复制节点

                                          innerHTML属性:可获取文本内容或向标签设置内容

                                   控制样式

                                          提前定义好css选择器样式,然后在script标签中,通过元素的className来设置其class属性对应的样式

                     事件

                            概念:某些组件执行某些操作之后,触发了某些代码的执行。事件源、事件、监听器、注册监听:将事件源、事件、监听结合在一起。

                            常见事件

                                   单击事件:onclick;双击事件:ondbclick;

                                   失去焦点事件:onblur,一般用于表单验证

                                   获得焦点事件:onfocus

                                   加载事件:onload,页面或图像完成加载

                                   鼠标事件:

                                          onmousedown 鼠标按钮被按下。定义方法事,形参使用event对象接受,event对象的botton属性可以获取鼠标按钮被点击

                                          onmouseup 鼠标按键被松开

                                          onmousemove:鼠标移动

                                          onmouseover:鼠标覆盖到某元素上

                                          onmouseout:鼠标从某元素移开

                                   键盘事件:

                                          onkeydown 某个键盘按键被按下。

                                          onkeyup 某个键盘按键被松开。

                                          onkeypress 某个键盘按键被按下并松开

                                   选择和改变

                                          onchange:域的内容改变

                                          onselect:文本被选中

                                   表单事件

                                          onsubmit:确认按钮被点击,方法返回false则表单被组织提交

                                          onreset:重置按钮被点击

1.7 jQuery概述、使用、选择器、DOM操作

                     概述:js框架,本质上是js代码

                     使用:

                            三大版本。1.x,2.x,3.x。只有1.x兼容ie678,因此使用最广泛,普通项目足够使用。

                            项目中创建js目录,下载jquery的js文件,copy到js目录下,在html文件的head标签中进行引入 <script src="js/jquery-xxx.js"></script>

                            JQuery对象和js对象区别与转换:jquery对象操作更加方便,但是jquery和js对象不通用,需要两者相互转换

                            jquery转js:jq对象[索引]或者jq对象.get(索引)

                            js转jquery:$("js对象")

                     选择器

                            定义:筛选具有相似特征的元素(标签)

                            基本使用

                                   事件绑定:$("#b1").click(function(){alert(“abc”);});

                                   入口函数:$(function () {}); 可定义多次,window.onload()只可定义一次,如果定义多次后面的会覆盖掉前面的内容

                                   样式控制:.css()方法,例如:$("#div1").css(“background-color”,“red”);

                            选择器分类:

                                   基本选择器:

                                          标签选择器: $("html标签名") 获得所有匹配标签名称的元素

                                          ID选择器: $("#id的属性值") 获得与指定id属性值匹配的元素

                                          类选择器:$(".class的属性值") 获得与指定的class属性值匹配的元素

                                          并集选择器: $("选择器1,选择器2....") 获取多个选择器选中的所有元素

                                   层级选择器:

                                          后代选择器: $("A B") 选择A元素内部的所有B元素 (包括儿子,孙子等)

                                          子元素选择器: $("A > B") 选择A元素内部的所有B子元素(只会查找儿子)

                                          相邻兄弟选择器: $("A + B") 选择A元素后面的一个B元素(同级关系)

                                          通用兄弟选择器: $("A ~ B") 选择A元素后面的所有B元素(同级关系)

                                          兄弟姐妹选择器: $("A").siblings("B") 选择A元素前后的所有B元素(同级)

                                   属性选择器

                                          属性名称选择器:$("标签名[属性名]") 包含指定属性标签的选择器

                                          属性选择器:$("标签名[属性名='值']") 包含指定属性等于指定值的选择器

                                          符合属性选择器:$("标签名[属性名='值'][]...") 包含多个属性条件的选择器

                                   过滤选择器

                                          首元素选择器::first 获得选择的元素中的第一个元素;$("div:first").css("background-color", "red"); 改变获取的第一个div元素的背景色为红色

                                          尾元素选择器::last 获得选择的元素中的最后一个元素;$("div:first").css("background-color", "red"); 改变获取的最后一个div元素的背景色为红色

                                          非元素选择器: :not(selector) 不包括指定内容的元素;$("div:not(.one)").css("background-color", "red");改变class不为one的div元素背景色为红色

                                          偶数选择器::even 偶数,从 0 开始计数;$("div:even").css("background-color", "red");改变索引

                                          为偶数的div元素背景色为红色。索引从0开始

                                          奇数选择器: :odd 奇数,从 0 开始计数;$("div:odd").css("background-color", "skyblue");改变索引为奇数的div元素背景色为红色。索引从0开始

                                          等于索引选择器::eq(index) 指定索引元素;$("div:eq(3)").css("background-color", "pink");改变索引值等于3的div元素

                                          大于索引选择器: :gt(index) 大于指定索引元素;$("div:gt(3)").css("background-color", "pink");改变索引值大于3的div元素

                                          小于索引选择器: :lt(index) 大于指定索引元素;$("div:lt(3)").css("background-color", "pink");改变索引值小于3的div元素

                                          标题选择器::header 获得标题(h1~h6)元素,固定写法;$(":header").css("background-color", "red");改变所有标题元素的背景色为红色

                                   表单属性选择器

                                          可用元素选择器: :enabled 获得可用元素; $("input[type='text']:enabled");获取多个Input标签中属性值是enabled,type=text的input标签数组;

                                          不可用元素选择器::disabled 获得不可用元素;$("input[type='text']:disabled");获取多个Input标签中属性值是disabled,type=text的input标签数组;

                                          (单选/复选)选中选择器: :checked 获得单选/复选框选中的元素;

                                          (下拉)选中选择器: :selected 获得下拉框选中的元素;  var $inputs = $("option:selected");for (var i = 0; i < $inputs.length; i++) { alert($($inputs[i]).text());} ;获取option标签中选择的元素,并进行遍历。从jquery对象中,获取的元素,变成了js,所以需要再次添加$转换为jquery进行使用

                     DOM操作

                            文本/值操作

                                   html();获取/设置元素的标签体内容;等同于js的innerHTML

                                   text();获取/设置元素的标签体纯文本内容;等同于js的innerTest

                                   val(); 获取/设置元素的value属性值;等同于js的value

                            属性操作

                                   通用属性操作:

                                   attr() === setAttribute和getAttribute; attr(属性名称)-获取属性的值;;attr(属性名称,属性值)-为属性名称赋值;

                                          attr(): 获取/设置元素的属性

                                          removeAttr():删除属性

                                          prop():获取/设置元素的属性

                                          removeProp():删除属性

                                          操作固有属性,建议使用prop;操作自定义元素,使用attr

                                   class属性操作:

                                   addClass(),removeClass(),css()

                                   addClass(值) === attr(“class”,值)

                                   removeClass(class值) === removeAttr(“class值”)

                                   css() ==== js对象.style.属性

                                   css(css属性名) 获取css属性名称对应值

                                   css(css属性名,值) 设置css样式

                                          addClass():添加class属性值

                                          removeClass():删除class属性值

                                          toggleClass():切换class属性

                                          css():$("#one").css("backgroundColor", "skyblue")-通过css方法设置id为one的北京颜色设置为蓝色;

                     CRUD操作

                            append();父元素将子元素追加到末尾;对象1.append(对象2): 将对象2添加到对象1元素内部,并且在末尾

                            prepend():父元素将子元素追加到开头;对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头

                            appendTo():对象1.appendTo(对象2):将对象1添加到对象2内部,并且在末尾

                            prependTo():对象1.prependTo(对象2):将对象1添加到对象2内部,并且在开头

                            after():添加元素到元素后边;对象1.after(对象2): 将对象2添加到对象1后边。对象1和对象2是兄弟关系

                            before():添加元素到元素前边;对象1.before(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系

                            insertAfter():对象1.insertAfter(对象2):将对象1添加到对象2后边。对象1和对象2是兄弟关系

                            insertBefore():对象1.insertBefore(对象2): 将对象1添加到对象2前边。对象1和对象2是兄弟关系

                            remove():移除元素;对象.remove():将对象删除掉

                            empty():清空元素的所有后代元素;对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点

1.8 jQuery动画、遍历、事件绑定

                     参考资料:https://blog.csdn.net/m0_37989980/article/details/104197931

                     动画:三种方式显示和隐藏元素

                            默认显示和隐藏方式:

                                   show([speed,[easing],[fn]])

                                   hide([speed,[easing],[fn]])

                                   toggle([speed],[easing],[fn])

                                          speed表示动画速度,可用3个预定义的值slow、norma、fast或表示动画时长的毫秒数值

                                          easing用来指定切换效果,默认swing,可用参数linear.swing表示先慢,中间快,最后慢。swing表示匀速。可省略

                                          fn表示动画完成时执行的函数,每个元素执行一次,可省略

                            滑动显示和隐藏方式

                                   slideDown([speed],[easing],[fn])

                                   slideUp([speed,[easing],[fn]])

                                   slideToggle([speed],[easing],[fn])

                            淡入淡出显示和隐藏方式

                                   fadeIn([speed],[easing],[fn])

                                   fadeOut([speed],[easing],[fn])

                                   fadeToggle([speed,[easing],[fn]])

                     遍历:jQuery对象本身就是数组,通过选择器获取的都是满足该选择器条件的元素对象的数组,因为常常需要对jQuery对象进行遍历

                            JS遍历方式:for(初始化值;循环结束条件;步长)

                            jQuery遍历方式:jq对象.each(callback回调函数);$.each(object,[callback]) {jQuery专属的遍历方式,针对jQuery全局对象的each方法};for..of(例如:for 元素对象 of 容器对象);

                            jq遍历语法:jq对象.each(function(index,element){}); index是索引,element是数组内的元素对象,this是集合中的每一个元素;回调函数返回值为false,结束整个循环,返回true,结束本次循环,继续下次循环.

                     事件绑定:

                            事件名称:blur(事件源失去焦点),click(单击事件),change(内容改变),keydown(所有键盘按键按下),keypress(部分键盘案件按下),keyup(键盘抬起),mouseover(鼠标悬停),mouseout(鼠标离开)

                            标准绑定方式:jq对象.事件方法(回调函数)

                            on绑定事件:jq对象.on("事件名称",回调函数)

                            off解除绑定:jq对象.off("事件名称") 如果off方法不传递任何参数,则将组件上的所有事件全部解绑

                            事件切换:jq对象.toggle(fn1,fn2...),单击jq对象对应的组件,会先执行fn1,后续执行fn2...

1.9 XML简介,语法,约束,解析

                     简介:XML是可扩展标记型语言.可自定义标签,可使用标签来操作

                     用途:可显示数据,主要用于存储数据

                     应用:常用于配置文件

                     语法

                            后缀:.xml

                            文档声明:<?xml version="1.0" encoding="gbk"?> ,必须放在第一行第一列.version表示xml版本,encoding表示XML编码

                            元素定义(标签):标签必须有开始和结束;标签无内容,可在标签内结束;必须合理嵌套;只能有1个根标签;会将空格和空行当作内容解析;

                            定义属性:一个标签可以有多个属性;属性名不可相同;属性名称和属性值用=连接,属性名称用单引号或双引号

                            注释:<!--注释内容-->,注释不可放在第一行,不可嵌套

                            特殊符号:%gt;(大于) %lt;(小于

                            CDATA区域:解决多个字符都需要转义的操作;内容放到CDATA中,可直接输出,<![CDATA[内容]]>

                            PI指令:在XML中设置样式;写法:<?xml-stylesheet type="text/css" href="css的路径"?>;只对英文标签有作用

                     XML约束

                            约束产生原因:统一XML文件格式

                            XML约束定义:XML技术中,编写文档/文件约束一个XML文档的书写规范

                     DTD约束

                            编写步骤:创建.dtd文件;XML中有多少元素,DTD文件中就写几个<!ELEMENT>;复杂元素有子元素<!ELEMENT 元素名称 (子元素)>,简单元素没有子元素<!ELEMENT 元素名称 (#PDDATA)>;xml中引入.dtd

                            xml中dtd引入方式

                                   引入外部dtd约束:<!DOCTYPE person SYSTEM "user.dtd">

                                 引入内部dtd约束:<!DOCTYPE person[<!ELEMENT person(name,age)> <!ELEMENT name(#PCDATA)> <!ELEMENT age(#PCDATA)>]>

                                   引入外部网络dtd约束:<!DOCTYPE 根元素 PUBLIC "dtd名称" "dtd文档的url">

                            使用DTD定义元素

                                   语法:<!ELEMENT 元素名 约束>

                                   简单元素:<!ELEMENT 元素名 约束>。例如:<!ELEMENT name (#PCDATA)>。约束可选:(!PCDATA)约束元素是字符串,EMPTY 约束元素为空,ANY 约束任意元素

                                   复杂元素:<!ELEMENT student (name+,age?,sex*)>;+:表示一次或者多次,?:表示零次或者一次,*:表示零次或者多次;子元素使用逗号隔开表示元素出现的顺序;子元素使用|隔开表示元素只能出现其中1个

                            DTD定义属性

                                   语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>

                                   属性类型

                                          字符串:CDATA;例如:<!ATTLIST name ID1 CDATA #REQUIRED>

                                          枚举:(aa|bb|cc);例如:<!ATTLIST age ID2 (19|20|21) #IMPLIED>

                                          ID:值只能字母或下划线开头;例如:<!ATTLIST name ID3 ID #FIXED "n1">

                                   属性约束

                                          #REQUIRED: 属性必须存在;#IMPLIED: 属性可有可无;#FIXED: 表示一个固定值(属性的值必须是此固定值);直接值:不写属性使用直接值,写属性使用设置的值。

                            定义实体

                                   语法:<!ENTITY 实体名称 "实体的值"> eg:<!ENTITY NAME "zy">

                                   使用实体:&实体名称;实义实体写在内部的dtd中

                     schema约束

                          概述:scheam以为.xsd为后缀,符合XML用法,一个xml可以有多个schema,用名称控件区分,支持多种数据类型,限制更加严格

                            文件开头属性:

                                   xmlns=“http://www.w3.org/2001/XMLSchema”表示当前xml文件是约束文件;引入文件方式:targetNamespace="被引入的约束文件地址";

                                   elementFormDefault=“qualified”表示质量良好

                            编写步骤:

                                   xml中有多少元素,就写多少元素;简单元素:写在<sequence><element        name="name",type="string"/><sequence/>里面;复杂元素:<complexType><sequence>元素内容<sequence/><complexType/>

                                   xml引入xsd约束

                                   zy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 表示该文件时是被约束文件

                                   xmlns="http://www.sunny.com/20191229 " 表示约束文件里的 targetNamespace

                                   xsi:schemaLocation=“http://www.sunny.com/20191229 zy.xsd” targetNamespace+空格+约束文档的路径地址

                            复杂元素指示器

                                   <sequence>:表示元素的出现顺序;

                                   <all>:表示元素只出现1次;

                                   <choice>:表示元素只能出现其中一个;

                                   <maxOccurs=“unbounded”>:表示元素出现的次数,unbounded表示不限制次数

                                   <any> 任意元素

                            约束属性

                                   位置:复杂元素里面的 </complexType> 之前

                                   <attribute name="id1" type="int" use="required"></attribute> name表述属性名称,type表述属性类型,uee表示属性是否必须出现required

                     XML解析简介

                            DOM解析:标签属性文本封装成对象,方便增删改操作,消耗内存,可能会造成内存溢出

                            SAX解析:一行一行解析,方便查询,不占内存,无法实现增删改

                     解析器

                            无论那种解析方式,都是通过api方式提供的

                            dom4j(DOM和SAX都支持,开发使用最多)

                            Jsoup(java的heml解析器,可直接解析URL地址、html内容)、

                            Jaxp(sun公司推出的DOM和SAX解析器)

                            jdom(jdom组织提供的DOM和SAX解析器)

                     常见题目汇总

                            XML是什么:XML是可扩展标记型语言,可根据实际需要扩展XML,可轻松自定义标签,而在HTML等其他标记语言中必须使用预定义的标签。XML主要用于两系统之间的数据传输,例如企业级应用客户端和服务端。

                            DTD和XML Scheam的区别:DTD非XML文件,XML Schema本身就是xml文件,因此可以用XML解析工具来进行解析;XMLSchema设计在DTD之后,支持更多的类型来映射XML不同的数据类型。DTD即文档类型描述,是定义XML文件结构的传统方式

                            XPath是什么:是从XML文件检索元素的XML技术,XML文档是结构化的,因此XPath可以从XML文件定位和检索元素、属性或值。

                            XSTL是什么:常用的XML技术,用于将XML文件转换为另一种XML、HTML或其他格式。

                            良好格式的XML:意味这XML文件在语法格式上正确,例如只有1个根元素,所有开放标签合适的闭合,属性值必须添加引号等。

                            XML命名空间是什么:与java的package类似,用来避免不同来源相同名称标签的冲突。XML命名空间在XML文档顶部使用xmlns属性定义,语法为xmlns:prefix="URI"

                            ★★DOM和SAX解析器的区别:主要在于解析XML的方式,DOM解析器是将XML以树形结构的方式加载到内存中,方便增删改操作,但是消耗内存;SAX解析器是事件驱动的解析器,一行一行解析,方便查询,不占内存,但是无法实现增删改。

                            XML CDATA是什么:指字符数据,CDATA部分不会被解析器解析,解决多个字符需要转义的操作,将内容放到CDATA中可直接输出。<![CDATA[输出内容]]>

                            java中XML数据绑定是什么:指从XML文件创建类和对象,使用java修改XML文档。绑定方式:XML绑定的java API,JAXB提供了绑定XML文件和java对象遍历方式,另一种方式为使用开源库,例如XML Beans。java中xml绑定的最大优势在于利用java创建和修改xml文档。

1.10  XML解析-Jaxp解析器

                            所属包路径:javax.xml.parsers

                            DOM解析器涉及类:DocumentBuilderFactory 解析器工厂类、DocumentBuilder 解析器类

                            DOM解析XML:

                                   创建解析工厂 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

                                   创建解析器 DocumentBuilder builder = builderFactory.newDocumentBuilder();

                                   解析XML,返回document         Document document = builder.parse("src/person.xml");

                                   针对document处理方法

                                          getElementsByTagName(String tagname) 返回一个标签集合 NodeList;例如:NodeList list = document.getElementsByTagName("p1");

                                          createElement(String tagName) 创建一个标签

                                          createTextNode(String data) 创建文本

                                          appendChild(Node newChild) 把节点添加到标签下

                                          removeChild(Node oldChild) 删除节点

                                          getParentNode() 获取父节点

                                   NodeList处理方法

                                          getLength() 得到集合的长度

                                          item(int index) 下表取到具体的值

                                          getTextContent() 得到标签里的内容

                            SAX解析器射击类:SAXParserFactory  解析器工厂类、SAXParser 解析器类

                                   创建解析器工厂 SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();

                                   创建解析器 SAXParser saxParser = saxParserFactory.newSAXParser();

                                   执行parse方法 saxParser.parse("src/zy.xml", new MyDefaultHandler()); MyDefaultHandler 是继承DefaultHandler的class,重写了startElement、characters、endElement方法,分别表示解析到开始标签、解析到文本、解析到结束标签

1.11 XML解析-Jsoup解析

                     概念:java的html解析器,可解析谋和url地址、html文本内容

                     使用:导入jar包、获取Document对象、获取对应标签的element对象、获取数据

                     Jsoup对象:工具类,解析html或xml文档,返回Document

                     获取Document对象:parse​(File in, String charsetName):解析xml或html文件的;parse​(String html):解析xml或html字符串;parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象

                     通过document获取对应的element对象:

                            getElementById(String id);通过id属性值获取唯一的element对象

                            getElementsByTag​(String tagName);根据标签名称获取元素对象集合

                            getElementsByAttribute​(String key);根据属性名称获取元素对象集合

                            getElementsByAttributeValue​(String key, String value);根据属性名称和属性值获取元素对象集合

                            String attr(String key); 根据属性名称获取属性值

                            String text();获取文本内容

                            String html();获取标签体的所有内容

                     Node:Document和Element的父类

                     快捷查询方式:select(String cssQuery);此方法是通过document对象调用

                     XPath:通过JXDocument的seln方法("XPath")来操作。new JXDocument(document)           

1.12 Dom4j解析器

                     基本用法

                            导入Jar包

                            获取Document对象:new SAXReader().read(url);document的父接口为Node

                            document常用方法:getRootelEment();获取根节点,返回值类型为Element

                            Node是element的父接口

                                   getParent()获取父节点

                                   addelement()添加标签

                                   element(name);获取标签下第一个标签名称为name的标签

                                   elements(name)获取标签下标签名称为name的所有子标签

                                   elements() 获取标签下面所有一层子标签

                     使用dom4j查询操作

                            创建解析器 SAXReader saxReader = new SAXReader();

                            创建Document对象   Document document = saxReader.read("XXX.xml");

                            使用getRootElement获取根节点,返回Element Element element document.getRootelEment();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值