DOM4J解析XML文档 Dom4j是一个简单,灵活的开放源代码的库,Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的APIxi相对要复杂一些,但它提供了比JDOM更好的灵活性 Dom4j是一个非常优秀的java XML API.具有性能优异,功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j 使用Dom4j开发,需下载dom4j相应的jar文件 xpath表达式 document.selectSingleNode("//user[@username='"+username+"'and @password='"+password+"']"); XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,其出现是为了克服DTD的局限性 Xml Schema VS DTD XML Schema符合XML语法结构 DOM SAX等XML API很容易解析出XMLSchema文档中的内容 XML Schema对名称空间支持得非常好。 XML Schema比XML DTD支持更多的数据类型,并支持用户定义新的数据类型 XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制 XML Schema不能像DTD一样定义实体,比DTD更复杂,但XMLSchema现在已经是W3c组织的标准,它正逐步取代DTD。 XML Schema文件自身就是一个XML文件,但它的扩展名通常为xsd 一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档 和xml文件一样,一个xml Schema文档也必须有一个根节点,但这个根节点的名称为Schema 编写了一个Xml Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间 来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。 名称空间的概念 在XML Schema中,每个约束模式文档都可以被赋以一个唯一名称空间,名称空间用一个唯一的URI(Unifoem Resource Identifier,统一资源标识符)表示。在XML文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个Schema约束文档。如 <itcast:书架xmlns:itcast="http;//www.itcast.cn"> <itcast:书>......</itcast:书> </itcast:书架> 此处使用itcast来指向声明的名称,以便于后面对名称空间的引用 注意:名称空间的名字语法容易让人混淆,尽管以http://k开始那个URLb并不指向一个包含模式定义的文件。事实上,这个URL:http://www.itcast.cn根本没有指向任何文件,只是一个分配的名字。 为了在一个XML文档中声明它所遵循的Schema文件的具体位置,通常需要在Xml文档中的根节点中使用schemaLocation属性来指定,例如: <itcast:书架xmlns:itcast="http://www.itcast.cn"> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itcast.cn book.xsd" schemaLocation此属性有两个值,第一个值是需要使用的命名空间,第二个值是供命名空间使用的XML Schema的位置,两者之间用空格分隔 注意,在使用schemaLocation属性时,也需要指定该属性来自哪里 基本格式: xmlns="URI" 举例: <书架xmlns="http://www.it315.org/xmlbook/schema"> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itcast.cn book.xsd" <书> <书名>javaScript</书名> <作者>张孝祥</作者> <售价>28.0元</售价> </书> </书架> 平面图形题(二维数组) public static void main(String[] args){ int num = 9; int height = num/4+1; int width = num; int arr[][] = new int[height][width]; int x =height-1; int y = 0; boolean order = false; for(int i=1;i<=num;i++){ arr[x][y] = i; y++; if(!order){ x--; } if(order){ x++; } if(x<0){ order =true; x = x+2; } if(x>2){ order = false; x = x-2; } } for(int i=0;i<arr.length;i++){ for(int z=0;z<arr.length;z++){ if(arr[z]==0){ System.out.print(" "); }else{ System.out.print(arr[z]); } } System.out.println(); } }
|