栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

XML解析

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML解析

1.什么是XML,作用是什么

        可扩展标记语言(Extensible Markup Language ),XML是一种数据格式,类似 HTML,是使用标签进行内容描述的技术,与HTML不 同的是,XML的标签和属性 都是根据业务需求自定义的。

XML在企业开发中主要有两种应用场景:

1)XML可以作为数据交换的载体,也就是说使用XML格式进行数据的传输

2)XML可以作为配置文件的载体。

2.如何去写一个XML(重点)

        XML的编写要比HTML简单,根据实际的业务场景自行编写有意义的标签和属性, 例如创建一个以.xml为后缀名的文件,编写描述一个网上商城的商品信息的xml

编写一个store.xml



    
        100
        华为手机
        3000
    
    
        200
        三星笔记本
        5000
    
    
        300
        海尔洗衣机
        4000
    

 xml编写时也要符合一定的规则:

1)xml文件的后缀名是.xml

2)xml有且只有一个根标签

3)xml的标签是尖括号包裹关键字成对出现的,有开始标签有结束标签,关键字是自 定义的,xml也可以有空标签/自关闭标签

4)xml允许有属性,属性也是根据需要自定义的,属性格式:属性=“属性值”,多 个属性之间使用空格隔开

5)xml是区分大小写的

上述xml的组成:

1)文档声明:

2)根标签,例如:

3)其他标签,例如:

4)属性,例如:category="电脑办公"

5)文本,例如:三星笔记本

6)注释,例如:

7)CDATA区:

CDATA区可以保证数据的原文输出,一些特殊符号也可以输出

例如:

3.如何去约束一个XML(了解)

提到约束一个XML,必须要理解为什么对XML要进行约束?

因为XML的标签都是自定义的,xml在作为框架配置时不能很好的规范开发者书写, 所以要使用约束告知开发者怎样去配置一个xml

XML的约束有两种:

1)DTD约束

2)Schema约束

(1)DTD约束

例如:我们要约束上述编写的store.xml,相应 的DTD约束如下

store.dtd



  #PCDATA 表示文本



                  category是属性名字 CDATA文本  #REQUIRED 表示必须的

 在store.xml中引入本地的DTD文件:

 

其中:SYSTEM代表本地dtd文件

在store.xml中引入互联网上的DTD文件:

 

其中:PUBLIC代表互联网上的DTD

//UNKNOWN/:此位置代表为引入的DTD取一个名称,随意取

unknown.dtd:此位置代表引入的DTD的路径,一般是互联网路径

store.xml





	
	
		100
		华为手机
		2588
	
	
		200
		华硕笔记本
		4588
	
	
		300
		格力空调
		3588
	

例如:

hibernate的核心配置文件的约束

struts2的配置文件的约束

(2)Schema约束

例如:我们要约束上述编写的store.xml,相应 的Schema约束如下

store.xsd

Schema中分为简单元素和复杂元素

简单元素:标签仅仅包含文本标签体的元素

复杂元素:标签包括子标签或属性的元素

sore.xsd内容如下



	
	
		
		
			
			
				
				
					
					
						
						
							
							
							
							
							
							
						
						
						
					
				
			
		
	

Schema约束是怎样引入到XML中的?

store.xml



	
	
		100
		华为手机
		2588
	
	
		200
		华硕笔记本
		4588
	
	
		300
		格力空调
		3588
	

 例如:

web工程的核心配置文件web.xml

spring的核心配置文件applicationContext.xml

4.如何去解析一个XML(了解)

XML的解析就是将有用的信息从XML文档中解析出来,例如上述的store.xml,怎 样通过API将store.xml中的属性值和文本解析出来。

(1)常用的解析方式

DOM解析:将文档整体加载到内存形成一个DOM树再解析,支持文档的增删改查和文档的回写。

SAX解析:读取一行解析一行,只支持文档的查询,也不支持文档的回写。

PULL解析:类似SAX解析,Android的常用解析技术。

(2)常用的解析技术

JAXP:SUN公司的官方解析技术,支持DOM解析和SAX解析

JSOUP:一种解析HTML的特定解析的开发包

JDOM:开源组织的DOM方式的解析技术

DOM4J:JDOM的分离版,开源,Hibernate底层的XML解析技术

(3)DOM4J解析技术

DOM4J是第三方开源的解析技术,首先要下载dom4j.jar

解析XML的步骤:

//使用原生的dom4j进行解析
@Test
public void test1() throws Exception{

   //目的:使用dom4j的API解析store.xml
   //1、创建解析器
   SAXReader reader = new SAXReader();
   //2、读取xml文件
   document doc = reader.read("src/main/webapp/WEB-INF/xml/store.xml");
   //3、获取根节点
   Element root = doc.getRootElement();
   //4、根据需求去解析文档中的数据
   System.out.println(root.getName());//store
   //4.1 获得所有的product元素
   List elements = root.elements();
   System.out.println(elements.size());//3
   //4.2 获得第二个product元素
   Element productElement = elements.get(1);
   //4.3 获得第二个product元素的属性值
   String attributevalue = productElement.attributevalue("category");
   System.out.println(attributevalue);//电脑办公
   //4.4 获得第二个product元素的字标签pname
   Element pnameElement = productElement.element("pname");
   System.out.println(pnameElement.getName());//pname
   //4.5 获得该pname的文本
   String pnameText = pnameElement.getText();
   System.out.println(pnameText);//华硕笔记本
}

 在dom4j的lib目录下有一个jaxen-1.1-beta-6.jar,导入这个jar包可以进行XPath 的解析。

//使用dom4j扩展jar 进行XPath解析
@Test
public void test2() throws Exception{
   //1、创建解析器
   SAXReader reader = new SAXReader();
   //2、读取文件
   document doc = reader.read("src/main/webapp/WEB-INF/xml/store.xml");
   //3、使用XPath规则进行解析 参数是Xpath规则
   //3.1 获得所有的pname,打印value
   List nodes = doc.selectNodes("//pname");
   nodes.forEach(n-> System.out.println(n.getText()));
   
   //3.2 获取category=大型家电的pname的值
   Element pnameElement = (Element) doc.selectSingleNode("//product[@category='大型家电']/pname");
   System.out.println(pnameElement.getText());//格力空调
}
 5.XML的实际应用场景(理解)

        实际开发中,我们一般会使用各种各样的框架的进行企业开发,而这些框架一般都会将某些公共的功能写好了,我们需要做的只需要按照框架提供的约束进行框架的配置 就可以了,当我们使用XML配置好框架后,在运行时,框架底层会解析我们配置XML 文档获取有用的信息,从而根据我们的需求实现某些功能。

  所以,实际开发中我们很少会自己编写XML约束和解析XML

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号