韩顺平 xml (完整版)_第1页
韩顺平 xml (完整版)_第2页
韩顺平 xml (完整版)_第3页
韩顺平 xml (完整版)_第4页
韩顺平 xml (完整版)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XMLXML历史历史lgml(1969)-sgml(1985)-html(1993)-xml(1998) 主讲: 韩顺平为什么需要为什么需要XMLXMLl需求1两个程序间进行数据通信?l需求2给一台服务器,做一个配置文件,当服务器程序启动时,去读取它应当监听的端口号、还有连接数据库的用户名和密码.?主讲: 韩顺平为什么需要为什么需要XMLXMLl需求3-红楼梦关系图:如何让程序去理解?XMLXML技术用于解决什么问题?技术用于解决什么问题?lXML语言出现还可以描述上图那种,在现实生活中经常出现的有关系的数据。l在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始

2、标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。例如:主讲: 韩顺平XMLXML常见应用常见应用lxmlxml的出现解决了的出现解决了程序间数据传输程序间数据传输的问题:的问题:比如比如qqqq之间的数据传送做案例进行详细讲解,用之间的数据传送做案例进行详细讲解,用xmlxml格式格式来传送数据,具有良好的可读性性,可维护性。来传送数据,具有良好的可读性性,可维护性。lxmlxml可以可以做配置文件做配置文件xmlxml文件做配置文件可以说非常的普遍,比如我们的文件做配置文件可以说非常的普遍,比如我们的tomcattomcat服务器服务器的的

3、server.xml server.xml ,web.xml web.xml 。在比如我们的在比如我们的strutsstruts中的中的struts-config.xmlstruts-config.xml文件,和文件,和hibernatehibernate的的hibernate.cfg.xml .hibernate.cfg.xml .lxmlxml可以可以充当小型的数据库充当小型的数据库xmlxml文件做小型数据库,也是不错的选择,我们程序中可能用到一文件做小型数据库,也是不错的选择,我们程序中可能用到一些经常要人工配置的数据,如果放在数据库中读取不合适些经常要人工配置的数据,如果放在数据库中

4、读取不合适( (因为你因为你要增加维护数据库工作要增加维护数据库工作) ),则可以考虑直接用,则可以考虑直接用xmxm来做小型数据库来做小型数据库 【比如【比如msnmsn中保存用户聊天记录就是用中保存用户聊天记录就是用xmlxml文件的】,而且直接读取文件的】,而且直接读取文件显然要比读取数据库快。文件显然要比读取数据库快。主讲: 韩顺平XMLXML语法语法l一个XML文件分为如下几部分内容:文档声明 元素属性注释 CDATA区 、特殊字符 处理指令(processing instruction) 主讲: 韩顺平XMLXML语法文档声明语法文档声明XML声明放在XML文档的第一行XML声明由

5、以下几个部分组成:version - -文档符合XML1.0规范,我们学习1.0encoding - -文档字符编码,比如”gb2312”standalone - -文档定义是否独立使用standalone=yes“standalone=“no” 默认主讲: 韩顺平元素元素 (1)(1) 每个每个XML文档必须有且只有一个文档必须有且只有一个根元素根元素。 根元素是一个完全包括文档中其他所有元素的根元素是一个完全包括文档中其他所有元素的元素。元素。 根元素的起始标记要放在所有其他元素的起始根元素的起始标记要放在所有其他元素的起始标记之前。标记之前。 根元素的结束标记要放在所有其他元素的结束根元

6、素的结束标记要放在所有其他元素的结束标记之后。标记之后。 主讲: 韩顺平元素元素 (2)(2)lXML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如:包含标签体:不含标签体的:, 简写为:l一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套 ,例如:welcome to 主讲: 韩顺平元素元素(3)(3)l对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。第一段第一段:xiaoming 第二段:第二段:xiaomingl由于在XML

7、中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,要特别注意。主讲: 韩顺平元素元素(4)(4)命名规范命名规范l一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:l区分大小写,例如,和是两个不同的标记。l不能以数字或_ (下划线)开头。l不能包含空格。l名称中间不能包含冒号(:)。主讲: 韩顺平属性属性TOM 属性值用双引号()或单引号()分隔(如果属性值中有,用分隔;有,用分隔) 一个元素可以有多个属性,它的基本格式为: 特定的属性名称在同一个元素标记中只能出现一次 属性值不能包括, &主讲: 韩顺平注释注释l注释内容中不要出现- -;l不

8、要把注释放在标记中间;Name TOMl注释不能嵌套;l可以在除标记以外的任何地方放注释。主讲: 韩顺平注释注释lXml文件中的注释采用:文件中的注释采用:“” 格式。格式。l注意:注意:XML声明之前不能有注释声明之前不能有注释注释不能嵌套,例如:注释不能嵌套,例如:!-大段注释- 主讲: 韩顺平CDATACDATA节节有些内容可能不想让解析引擎解析执行,而是当作原始内容处理,用于把整段文本解释为纯字符数据而不是标记的情况。包含大量、&或者字符。CDATA节中的所有字符都会被当作元素字符数据的常量部分,而不是XML标记。语法:可以输入任意字符(除外)不能嵌套示例主讲: 韩顺平转义字符

9、转义字符l对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理。转义符符号<&"'主讲: 韩顺平处理指令处理指令l处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。l例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。l处理指令必须以“”作为结尾,XML声明语句就是最常见的一种处理指令。 主讲: 韩顺平格式正规的格式正规的XMLXML文档文档- -小结小结遵循如下规则的XML文档称为格

10、式正规的XML文档:u 语法规范XML声明语句必须有且仅有一个根元素标记大小写敏感属性值用引号标记成对空标记关闭元素正确嵌套主讲: 韩顺平格式正规的格式正规的XMLXML文档文档- -小结小结u元素语法 名称中可以包含字母、数字或者其它字符 名称中不能含空格 测 名称中不能含冒号(注:冒号留给命名空间使用) 测主讲: 韩顺平xmlxml文件约束文件约束-dtd-dtddtd主讲: 韩顺平XMLXML约束概述约束概述l什么是XML约束在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。l为什么需要XML约束问题:myclass.xml- stu-添加面积元素?l常

11、用的约束技术XML DTD XML Schema主讲: 韩顺平DTDDTD约束快速入门约束快速入门lDTD(Document Type Definition),全称为文档类型定义。文件清单:文件清单:myClass.xmlmyClass.xml周星驰23学习刻苦林青霞 32是一个好学生dtd文件:文件:myClass.dtdDTD文件应使用文件应使用UTF-8或或Unicode主讲: 韩顺平编程校验编程校验XMLXML文档正确性文档正确性(xmlspy)(xmlspy)lIE5以上浏览器内置了XML解析工具:Microsort.XMLDOM,开发人员可以编写javascript代码,利用这个解

12、析工具装载xml文件,并对xml文件进行dtd验证。l创建xml文档解析器对象var xmldoc = new ActiveXObject(Microsoft.XMLDOM);l开启xml校验xmldoc.validateOnParse = true;l装载xml文档xmldoc.load(book.xml);l获取错误信息xmldoc.parseError.reason; xmldoc.parseError.line主讲: 韩顺平DTDDTD文档的声明及引用文档的声明及引用uDTD文档的声明及引用内部DTD文档外部DTD文档内外部DTD文档结合主讲: 韩顺平内部内部dtddtd!DOCTYP

13、E poem -根元素的名称根元素的名称-子元素的名称子元素的名称及顺序及顺序-子元素的数据类型子元素的数据类型 -结束标签结束标签 王维王维 鹿柴鹿柴 空山不见人空山不见人,但闻人语声但闻人语声. 返景入深林返景入深林,复照青苔上复照青苔上. 注意:例中的定义关键字一定要大写,如注意:例中的定义关键字一定要大写,如DOCTYPE、ELEMENT、#PCDATA,且元素名称与,且元素名称与数据类型之间也要有空格。数据类型之间也要有空格。内部内部DTD示例示例主讲: 韩顺平外部外部dtddtd王维鹿柴空山不见人,但闻人语声.返景入深林,复照青苔上. 外部外部DTD示例示例主讲: 韩顺平引用引用D

14、TDDTD约束约束lXML文件使用文件使用 DOCTYPE 声明语句来指明它所遵循声明语句来指明它所遵循的的DTD文件,文件,DOCTYPE声明语句有两种形式:声明语句有两种形式:当引用的文件在本地时,采用如下方式:当引用的文件在本地时,采用如下方式:例如: 。当引用的文件是一个公共的文件时,采用如下方式:当引用的文件是一个公共的文件时,采用如下方式:例如:例如:主讲: 韩顺平DTDDTD元素元素(1)(1)l语法关键字关键字元素名称元素名称EMPTY该元素不能包含子元素和文本,但可以有属性(空元素)该元素不能包含子元素和文本,但可以有属性(空元素)ANY该元素可以包含任何在该元素可以包含任何

15、在DTD中定义的元素内容中定义的元素内容#PCDATA可以包含任何字符数据,但是不能在其中包含任何子元素可以包含任何字符数据,但是不能在其中包含任何子元素其它类型其它类型(组合组合)元素类型元素类型(大写大写)主讲: 韩顺平dtddtd元素元素(2)(2)lEMPTY示例示例-空元素空元素皮诺曹皮诺曹皮诺曹爸爸皮诺曹爸爸主讲: 韩顺平dtddtd元素元素(3)(3)lANY示例示例皮诺曹皮诺曹皮诺曹爸爸皮诺曹爸爸主讲: 韩顺平dtddtd元素元素(4)(4)l#PCDATA示例示例(放入文本放入文本)皮诺曹皮诺曹皮诺曹爸爸皮诺曹爸爸主讲: 韩顺平dtddtd元素元素(5)(5) l组合类型示例

16、组合类型示例主讲: 韩顺平修饰符修饰符符号符号 用途用途 示例示例示例说明示例说明( )用来给元素分组用来给元素分组 (古龙(古龙|金庸金庸|梁羽梁羽生)生),(王朔(王朔|余杰)余杰),毛毛毛毛 分成三组分成三组 |在列出的对象中选择在列出的对象中选择一个一个 (男人(男人|女人)女人) 表示男人或者女人必须出现,两表示男人或者女人必须出现,两者至少选一者至少选一 +该对象最少出现一次,该对象最少出现一次,可以出现多次可以出现多次 (1或或多次)多次)(成员(成员+) 表示成员必须出现,而且可以出表示成员必须出现,而且可以出现多个成员现多个成员*该对象允许出现零次该对象允许出现零次到任意多次

17、(到任意多次(0到多到多次)次)(爱好(爱好*) 爱好可以出现零次到多次爱好可以出现零次到多次?该对象可以出现,但该对象可以出现,但只能出现一次只能出现一次 (0到到1次次)(菜鸟(菜鸟?) 菜鸟可以出现,也可以不出现,菜鸟可以出现,也可以不出现,如果出现的话,最多只能出现一如果出现的话,最多只能出现一次次 ,对象必须按指定的顺对象必须按指定的顺序出现序出现 (西瓜(西瓜,苹果苹果,香蕉)香蕉) 表示西瓜、苹果、香蕉必须出现,表示西瓜、苹果、香蕉必须出现,并且按这个顺序出现并且按这个顺序出现 主讲: 韩顺平属性定义属性定义- -语法语法 CDATAIDIDREF/IDREFSEnumerate

18、dENTITY/ENTITIES#REQUIRED#IMPLIED#FIXED valueDefault value主讲: 韩顺平属性类型属性类型 CDATACDATAl属性值可以是任何字符(包括数字和中文)属性值可以是任何字符(包括数字和中文) 主讲: 韩顺平属性类型属性类型 IDIDl表明该属性的取值必须是唯一的。ID属性值必须是合格的属性值必须是合格的XML名字名字主讲: 韩顺平属性类型属性类型 IDREF/IDREFSIDREF/IDREFSlIDREF属性的值指向文档中其它地方声明的属性的值指向文档中其它地方声明的ID类型的值。类型的值。lIDREFS同同IDREF,但是可以具有由,

19、但是可以具有由空格空格分开的多个引用。分开的多个引用。 主讲: 韩顺平属性类型属性类型EnumeratedEnumeratedl事先定义好一些值,属性的值必须在所列出的值的范围内。事先定义好一些值,属性的值必须在所列出的值的范围内。 主讲: 韩顺平属性的特点属性的特点REQUIREDREQUIREDl元素的所有实例都必须有该属性的值元素的所有实例都必须有该属性的值(NOT NULL)l语法:语法:lDTD 示例示例: lXML 示例示例: 主讲: 韩顺平属性的特点属性的特点IMPLIEDIMPLIEDl元素的实例中可以忽略该属性元素的实例中可以忽略该属性(NULL)。l语法:语法: lDTD示

20、例:示例: lXML示例:示例: 主讲: 韩顺平属性的特点属性的特点FIXED valueFIXED valuel元素实例中该属性的值必须为指定的固定值。l语法:lDTD示例: lXML示例: 主讲: 韩顺平属性的特点属性的特点Default valueDefault valuel为属性提供一个默认的值l语法:lDTD示例: lXML示例: 主讲: 韩顺平实体定义实体定义 l实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。l在DTD定义中,一条语句用于定义一个实体。l实体可分为两种类型:引用实体和参数实体。主讲: 韩顺平实体定义实体定义- -引用实体引用实体 l

21、引用实体主要在 XML 文档中被应用l语法格式(dtd中定义):直接转变成实体内容l引用方式(xml中引用)&实体名称;l举例: &copyright;主讲: 韩顺平实体定义实体定义参数实体参数实体 l参数实体被 DTD 文件自身使用l语法格式:语法格式: l引用方式:引用方式:%实体名称;l举例举例1: l举例举例2:.主讲: 韩顺平dtddtd实际操作实际操作 我们具体使用一个比较复杂的dtd文件,来编写一个有效地xml,并需要验证通过. 比较复杂的dtd.txt主讲: 韩顺平xmlxml编程编程xml编程主讲: 韩顺平XMLXML解析技术介绍解析技术介绍lXML解析分为:

22、dom解析和sax解析dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。sax: (Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。lXML解析器()Crimson(sun)、Xerces (ibm-apache)、Aelfred2(dom4j)lXML解析API(application program interface)Jaxp(sun)dom、dom4jdom主讲: 韩顺平JAXPJAXP介绍介绍lJAXP 开发包是J2SE的一部分,它由ja

23、vax.xml、org.w3c.dom 、org.xml.sax 包及其子包组成l在 javax.xml.parsers 包中,定义了几个工厂类,程序员调用这些工厂类,可以得到对xml文档进行解析的 DOM 或 SAX 的解析器对象。主讲: 韩顺平获得获得JAXPJAXP中的中的DOMDOM解析器步骤解析器步骤调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂。调用工厂对象的 newDocumentBuilder方法得到 DOM 解析器对象。调用 DOM 解析器对象的 parse() 方法解析 XML 文档,得到代表整个文档的 D

24、ocument 对象,进行可以利用DOM特性对整个XML文档进行操作了。主讲: 韩顺平jaxpjaxp实例实例l为了让大家快速上手,我们实际操作一把! 要求: 使用jaxp进行dom解析 class.xml文件.文件清单:文件清单:myClass.xmlmyClass.xml周星驰23学习刻苦林青霞 32是一个好学生主讲: 韩顺平jaxpjaxp实例实例l为了让大家快速上手,我们实际操作一把! 要求: 使用jaxp进行dom解析 class.xml文件.文件清单:文件清单:myClass.xmlmyClass.xml周星驰23学习刻苦林青霞 32是一个好学生主讲: 韩顺平DOMDOM编程编程l

25、DOM模型模型(document object model)DOM解析器在解析解析器在解析XML文档时,会把文档中的所有元素,文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个按照其出现的层次关系,解析成一个个Node对象对象(节点节点)。在在dom中,节点之间关系如下:中,节点之间关系如下:位于一个节点之上的节点是该节点的父节点位于一个节点之上的节点是该节点的父节点(parent)一个节点之下的节点是该节点的子节点(一个节点之下的节点是该节点的子节点(children) 同一层次,具有相同父节点的节点是兄弟节点(同一层次,具有相同父节点的节点是兄弟节点(sibling) 一个节

26、点的下一个层次的节点集合是节点后代一个节点的下一个层次的节点集合是节点后代(descendant)父、祖父节点及所有位于节点上面的,都是节点的祖先父、祖父节点及所有位于节点上面的,都是节点的祖先(ancestor) 节点类型(下页节点类型(下页ppt)主讲: 韩顺平NodeNode对象对象lNode对象提供了一系列常量来代表结点的类型,当开发人员获得某个Node类型后,就可以把Node节点转换成相应的节点对象(Node的子类对象),以便于调用其特有的方法。(查看API文档) lNode对象提供了相应的方法去获得它的父结点或子结点。编程人员通过这些方法就可以读取整个XML文档的内容、或添加、修改

27、、删除XML文档的内容了。主讲: 韩顺平更新更新XMLXML文档文档ljavax.xml.transform包中的Transformer类用于把代表XML文件的Document对象转换为某种格式后进行输出,例如把xml文件应用样式表后转成一个html文档。利用这个对象,当然也可以把Document对象又重新写入到一个XML文件中。lTransformer类通过transform方法完成转换操作,该方法接收一个源和一个目的地。我们可以通过:javax.xml.transform.dom.DOMSource类来关联要转换的document对象, 用javax.xml.transform.strea

28、m.StreamResult 对象来表示数据的目的地。l Transformer对象通过TransformerFactory获得。主讲: 韩顺平domdom练习练习l练习一下,学生成绩管理系统(jaxp的dom解析)主讲: 韩顺平saxsax解析解析SAX解析解析主讲: 韩顺平SAXSAX解析解析l在使用 DOM 解析 XML 文档时,需要读取整个 XML 文档,在内存中构建代表整个 DOM 树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果 XML 文档特别大,就会消耗计算机的大量内存,严重情况下可能还会导致内存溢出。lSAX解析允许在读取文档的时候,即对文档进行处理,而

29、不必等到整个文档装载完才会文档进行操作。l通过继承DefaultHandler ,来开发一个sax解析器主讲: 韩顺平SAXSAX解析机制解析机制sax是一种推式的机制,你创建一个sax 解析器,解析器在发现xml文档中的内容时就告诉你(把事件推给你). 如何处理这些内容,由程序员自己决定。在基于sax 的程序中,有五个最常用sax事件startDocument() - 告诉你解析器发现了文档的开始,告诉你解析器开始扫描文档.endDocument() - 告诉你解析器发现了文档尾startElement()- 告诉你解析器发现了一个起始标签,该事件告诉你元素的名称,该元素所有的属性名和值.c

30、haracter() - 告诉你解析器发现了一些文本,将得到一个字符数组, 该数组的偏移量和一个长度变量,有这三个变量你可以得到解析器所发现的文本.endElement()- 告诉你解析器发现了一个结束标签,该事件告诉你元素的名称主讲: 韩顺平SAXSAX解析解析lSAX采用事件处理事件处理的方式解析XML文件,利用 SAX 解析 XML 文档,涉及两个部分:解析器和事件处理器:解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在

31、调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。主讲: 韩顺平SAXSAX方式解析方式解析XMLXML文档文档l使用SAXParserFactory创建SAX解析工厂SAXParserFactory spf = SAXParserFactory.newInstance();l通过SAX解析工厂得到解析器对象SAXParser sp = spf.newSAXParser();l将解析对象和事件处理器对象关联 sp.parse(

32、src/myClass.xml, new MyHander();主讲: 韩顺平SAXSAX实例实例我们使用sax技术来解析一个xml文档,从中我们可以看到sax是如何使用的。主讲: 韩顺平文件清单:文件清单:myClass.xmlmyClass.xml周星驰23学习刻苦林青霞 32是一个好学生DOM4J解析XML文档lDom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。 lDom4j是一个非常优秀的Java XML API,

33、具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXP也用了Dom4j。l使用Dom4j开发,需下载dom4j相应的jar文件。主讲: 韩顺平DocumentDocument对象对象lDOM4j中,获得Document对象的方式有三种:l开发开发dom4j要加入新要加入新jar包,并且在倒包时要导入包,并且在倒包时要导入dom4j的包的包1.读取XML文件,获得document对象 SAXReader reader = new SAXReader(); Document document = reader.read(new F

34、ile(“src/input.xml);2.解析XML形式的文本,得到document对象. String text = ; Document document = DocumentHelper.parseText(text);3.主动创建document对象. Document document = DocumentHelper.createDocument(); /创建根节点 Element root = document.addElement(members);主讲: 韩顺平节点对象节点对象l1.获取文档的根节点. Element root = document.getRootEleme

35、nt();l2.取得某个节点的子节点.Element element=node.element(“书名);l3.取得节点的文字 String text=node.getText();主讲: 韩顺平dom4jdom4j快速入门快速入门主讲: 韩顺平文件清单:文件清单:myClass.xmlmyClass.xml周星驰23学习刻苦林青霞 32是一个好学生/1遍历整个xml文件public static void list(Element e)System.out.println(e.getName()+e.getText().trim();Iterator it=e.elementIterator

36、();while(it.hasNext()Element element=(Element) it.next();list(element);/1.读取xml的某个标签内容(比如,读取第一个学生的名字)public static void read(Document doc)Element stu=doc.getRootElement().element(名字);Element name=stu.element(名字);System.out.println(stu.getText();dom4jdom4j快速入门快速入门主讲: 韩顺平文件清单:文件清单:myClass.xmlmyClass.x

37、ml周星驰23学习刻苦林青霞 32是一个好学生/3.添加xml标签(加入一个学生)public static void add(Document doc) throws IOException/1.创建一个元素Element e=DocumentHelper.createElement(学生);/e.setText(贾宝玉);/在学生标签下,加入名字Element name=DocumentHelper.createElement(名字);name.setText(小龙女);e.add(name);/2.挂到根元素下doc.getRootElement().add(e);/3.更新文档.Out

38、putFormat output=OutputFormat.createPrettyPrint();output.setEncoding(utf-8);/分析/XMLWriter writer=new XMLWriter(new FileWriter(src/myClass.xml),output);/一种解决乱码的方法/*XMLWriter writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File(src/myClass.xml),utf-8),output);*/第二种方法解决乱码XMLWriter

39、writer=new XMLWriter(new FileOutputStream(new File(src/myClass.xml),output);writer.write(doc);writer.close();将文档写入将文档写入XMLXML文件文件l1.文档中全为英文,不设置编码,直接写入的形式. XMLWriter writer = new XMLWriter(new FileWriter(output.xml); writer.write(document); writer.close();l2.文档中含有中文,设置编码格式写入的形式.OutputFormat format =

40、OutputFormat.createPrettyPrint();/ 指定XML编码 format.setEncoding(GBK); XMLWriter writer = new XMLWriter(newFileWriter(output.xml),format);writer.write(document);writer.close();出现乱码. new OutputStreamWriter(new FileOutputStream(src/myClass.xml),utf-8)主讲: 韩顺平节点对象节点对象l4.取得某节点下所有名为“member”的子节点,并进行遍历. List n

41、odes = rootElm.elements(member); for (Iterator it = nodes.iterator(); it.hasNext();) Element elm = (Element) it.next(); / do something l5.对某节点下的所有子节点进行遍历. for(Iterator it=root.elementIterator();it.hasNext();) Element element = (Element) it.next(); / do something l6.在某节点下添加子节点.Element ageElm = newMem

42、berElm.addElement(age);主讲: 韩顺平节点对象节点对象l7.设置节点文字. element.setText(29);l8.删除某节点./childElm是待删除的节点,parentElm是其父节点 parentElm.remove(childElm);l9.添加一个CDATA节点.Element contentElm = infoElm.addElement(content);contentElm.addCDATA(diary.getContent();主讲: 韩顺平节点对象属性节点对象属性l1.取得某节点下的某属性 Element root=document.getRootElement(); /属性名name Attribute attribute=root.attribute(size);l2.取得属性的文字 String text=attribute.getText();l 3.删除某属性 Attribute attribute=root.attribute(size); root.remove(attribute);主讲: 韩顺平节点对象属性节点对象属性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论