建设工程公司 网站,建筑网站设计模版,九九建筑网66kv架空线路设计视频讲座,网站规划设计流程Java操作XML
XML语法
一个XML文件分为文档声明、元素、属性、注释、CDATA区、特殊字符、处理指令。
转义字符
对于一些单个字符#xff0c;若想显示其原始样式#xff0c;也可以使用转义的形式予以处理。 amp;若想显示其原始样式也可以使用转义的形式予以处理。 amp;lt;gt;quots;apos;CDATA区
在编写XML文件时有些内容可能不想让解析引擎解析执行而是当作原始内容处理。此时可以把内容放在CDATA区里XML解析程序原封不动的输出。
![CDATA[ 内容 ]]处理指令
处理指令用来指挥解析引擎如何解析XML文档的内容。比如在XML文档中可以使用xml-stylesheet指令通知XML解析引擎应用css文件显示xml文档内容。
?xml-stylesheet typetext/css href1.css?处理指令必须以“?”开头以“?”结尾XML声明语句是最常见的一种处理指令。
SAX解析 在使用 DOM 解析 XML 文档时需要读取整个 XML 文档在内存中构架代表整个 DOM 树的Doucment对象从而再对XML文档进行操作。此种情况下如果 XML 文档特别大就会消耗计算机的大量内存并且容易导致内存溢出。SAX解析允许在读取文档的时候就对文档进行处理而不必等到整个文档装载完才会文档进行操作。 SAX采用事件处理的方式解析XML文档利用SAX解析XML文档涉及解析器和事件处理器。 解析器可以使用JAXP的API创建创建出SAX解析器后就可以使用指定解析器去解析某个XML文档。解析器采用SAX方式解析文档时只要解析到XML文档的一个组成部分都会去调用事件处理器的一个方法解析器在调用事件处理器方法时会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。 SAX方式解析XML文档
//使用SAXParserFactory创建SAX解析工厂
SAXParserFactory spf SAXParserFactory.newInstance();
//通过SAX解析工厂得到解析器对象
SAXParser sp spf.newSAXParser();
//通过解析器对象得到XML读取器
XMLReader xmlReader sp.getXMLReader();
//设置读取器的事件处理器
xmlReader.setContentHandler(new BookParserHandler());
//解析xml文档
xmlReader.parse(book.xml);实现ContentHandler接口实现startElement、characters、endElement方法。 输出指定标签值。
class TagHander extends DefaultHandler{private String tagName;private int choice 2; //要读取第几本书的版本号private int currenctVersion; //当前读取到第几本书Overridepublic void startElement(String uri, String localName, String name,Attributes attributes) throws SAXException {tagName name;if (name.equals(version)) {currenctVersion;}}Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if (version.equals(tagName) currenctVersion choice) {System.out.println(new String(ch,start,length));}Overridepublic void endElement(String uri, String localName, String name)throws SAXException {tagName null;}}
}XML约束
在XML技术里可以编写一个文档来约束一个XML文档的书写规范称为XML约束。常用约束技术有XML DTD、XML Schema。
DTD
Document Type Definition使用UTF-8或Unicode。在DTD文档中使用ELEMENT声明一个XML元素。!ELEMENT 元素名称 元素类型元素类型可以是元素内容或类型。DTD规范定义了几种类型如EMPTY用于定义空元素ANY表示元素内容为任意类型。
!-- book.dtd --
!ELEMENT 书架 (书)
!ELEMENT 书 (书名,作者,售价)
!ELEMENT 书名 (#PCDATA)
!ELEMENT 作者 (#PCDATA)
!ELEMENT 售价 (#PCDATA)!-- book.xml --
?xml version1.0?
!DOCTYPE 书架 SYSTEM book.dtd
书架书书名一千零一夜/书名作者佚名/作者售价未知/售价/书
/书架元素内容可以使用如下方式描述内容的组成关系
!-- 用逗号分隔表示内容的出现顺序必须与声明时一致 --
!ELEMENT MYFILE(TITLE,AUTHOR,EMAIL)
!-- 用|分隔表示任选其一 --
!ELEMENT MYFILE(TITLE|AUTHOR|EMAIL)在元素内容中可以使用、*、?等符号表示元素出现的次数表示一次或多次?表示0次或一次*表示0次或多次元素必须出现一次。使用圆括号批量设置。
属性定义
xml文档中的标签属性需要通过ATTLIST为其设置属性。
!ATTLIST 元素名属性名1 属性值类型 设置说明属性名2 属性值类型 设置说明......!ATTLIST 商品类别 CDATA #REQUIRED颜色 CDATA #IMPLIED
商品 类别服装 颜色黄色/商品常用属性值类型有CDATA普通文本字符串ENUMERATEDIDENTITY实体。
Schema约束 XML Schema对名称空间的支持非常好比DTD支持更多的数据类型。一个Schema文档称为模式文档遵循这个文档书写的xml文件称为实例文档。 在XML Schema中每个约束模式文档都可以被赋以一个唯一的名称空间名称空间用一个唯一的URIUniform Resource Identifier统一资源标识符表示。 在Xml文件中书写标签时可以通过名称空间声明xmlns来声明当前编写的标签来自哪个Schema约束文档。为了在一个XML文档中声明它所遵循的Schema文件的具体位置通常需要在Xml文档中的根结点中使用schemaLocation属性来指定。