收藏 分享(赏)

XML(可扩展标记语言)基本应用.doc

上传人:dcjskn 文档编号:5912090 上传时间:2019-03-21 格式:DOC 页数:17 大小:82.50KB
下载 相关 举报
XML(可扩展标记语言)基本应用.doc_第1页
第1页 / 共17页
XML(可扩展标记语言)基本应用.doc_第2页
第2页 / 共17页
XML(可扩展标记语言)基本应用.doc_第3页
第3页 / 共17页
XML(可扩展标记语言)基本应用.doc_第4页
第4页 / 共17页
XML(可扩展标记语言)基本应用.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、一、xml 简介A.1 什么是 xml?XML 全称是“可扩展标识语言 “(Extensible Markup Language) 。之所以称之为可扩展,是因为它不像HTML 那样只有固定的形式。它是被用来使 SGML 能在万维网上能应用自如 XML 并不是一个独立的,预定义的标识语言。它是一种元语言。它是用来描述其他语言的语言。它允许你自己设计你的标识。(HTML 是一种预定义的标识语言。HTML 只是在一类特定的文件中定义了一种描述信息的方法。而 XML 能允许你在不同的文件中定义你自己设计的标识语言。 )这是因为 XML 是用 SGML (“通用标识语言标准”国际标准的标识元语言)书写的

2、。xml是 Web应用的一种新技术,是万维网联盟(W3C) 制定的的标准。XML 简化了网络中数据交换和表示,使得代码、数据和表示可以分离,可以作为数据交换的标准格式。就这点而言,XML 被称为智能数据文档.Microsoft 对 XML 的定义是:SGML 的简化子集,专门为 Web 应用程序而设计。XML 提供描述不同类型数据的标准格式 例如,约会记录、购买定单、数据库记录 从而可一致而正确地解码、管理和显示信息。 XML 提供表示数据的文件格式、描述数据结构的计划、以及用语义信息扩展和注释 HTML 的机制。总而言之,XML 是一种元标注语言,该语言提供一种描述结构数据的格式。这有助于更

3、精确地声明内容,方便跨越多种平台的更有意义的搜索结果。此外,XML 将起用新一代的基于 Web 的数据查询和处理应用程序。A.2 XML的目的是什么?XML 是被设计用来使 SGML 能在万维网上能自如应用的:方便地定义文件类型,方便地制作和管理用 SGML定义的文件,在网上方便地传输和共享这些文件。使得 Internet上的数据相互交流更方便,让文件的内容更加加显而易懂。A.3 什么是 SGML?SGML 的全称是“Standard Generalized Markup Language“(通用标识语言标准) 。它是国际上定义电子文件结构和内容描述的标准。在网上有以下相关资源A.4 什么是

4、HTML?HTML 的全称是“HyperText Markup Language “(超文本标识语言) 。它是 SGML在网络上的一个特殊应用。A.5 XML,SGML,HTML 是不是一回事?不竟然。SGML 是 XML和 HTML的母语言。SGML 的覆盖面很广。它几乎涉及人们生活的每一个领域。它被用来描述成千上万中文件。HTML 只是其中一种文件类型,是一种在网上最常用的类型。它定义了一种简单而固定且含标识的文件类型。 XML是 SGML的简化版。为了实现更加方便地编写和理解应用程序,更加方便地在网络上传输信息,更加方便地实现互操作性,XML 申略了一些 SGML中复杂和不常用的部分。但

5、 XML还能和 SGML一样通过解析.A.6 SGML/XML 和 C/ C+?什么不同?C 和 C+和 Fortran, Pascal, Basic, 或是 Java一样都是编程语言。是用来制定运算和操作的.而 SGML和 XML标是说明性的语言。它们是用来表现信息的。它们使得信息能被程序正常地存储传输和处理。就它们本身而言,并不能产生什么操作。操作要由应用程序来实现。A7 XML 与 HTML的主要区别Html 文件类型单一,不足以处理千变万化的文档和数据,而且 html本身语法不严密,严重影响网络信息的传输和共享.Xml 叫做可扩展标记性语言,特点是可移植性、与平台无关、有直接可读的形式

6、。二、常用的关键词或缩略语缩略语清单:SGML Standard Generalized Markup Language(通用标识语言标准)HTML Hyper Text Markup Language (超文本标记语言)XML Extensible Markup Language(可扩展标记语言)SAX Simple APIs for XML(XML 简单应用程序接口) (事件驱动)DOM Document Object Model(文档对象模型) (文档驱动)XSL Extensible Stylesheet Language,可扩展样式语言DTD Document Type Defini

7、tion,文档类型声明DCD Document Content Declaration文档内容描述RDF Resource Description FormatCSS Cascading StyleSheetsXSLT Extensible Stylesheet Language TransformationsXpath XML Path LanguageXlink eXtensible Link Language,可扩展链接语言W3C world Web Consortium,web 技术标准化集团SVG Scalable Vector GraphicsVRML Virtual Realit

8、y Markup Language三、为什么要使用 XML?广泛接受的标准(这对完全使用 Web 的潜力是至关重要的)允许 Web 在多种交互操作的技术层上通讯。一个重要层是可视化显示和用户界面,例如 HTML、GIF 和 JScript(TM) 之类的现有标准。这些标准允许创建一次页面,并且在不同时间向众多接收者显示。尽管可视化和用户界面标准是必要层,但它们并不足以表示和管理数据(我一再的强调和 XML关系最近的是数据) 。当前,Internet 只是文本和图片的访问媒体。并没有智能搜索、数据交换、自适应表示和个人化的标准。Internet 必须超出设置信息访问和显示标准的限制,必须设置信息

9、理解标准(表示数据的通用方式) ,以便软件能够更好地搜索、移动、显示和处理上下文中隐藏的信息。由于 HTML 是一种描述如何表示 Web 页的格式,所以 HTML 并不能完成以上处理;HTML 并不表示数据,它能够也只能够描述数据的显示格式。例如,HTML 不能:(1)允许医药实验室以所有接收者均能分析的格式发表统计信息。(2)以所有接受者均能解码和处理的表格描述电子支付。(3)提供搜索法律图书馆中有关某一主题的所有诉讼文档的标准方式。(4)指定以何种方式传送公司目录中的信息,以便销售人员可以脱机工作、向客户显示目录、接受定单并以标准格式上载这些定单。简而言之,尽管 HTML 提供了用于显示的

10、丰富工具,但 HTML 并没有提供任何基于标准的管理数据的方式。正如数年前用于显示的 HTML 标准扩展了 Internet 一样,数据标准亦将扩展 Internet。数据标准将是商业交易、公布个人喜爱的配置文件、自动协作和数据共享的工具。将以此格式编写制药研究数据、半导体部件图以及采购定单。这将开创众多新用途,这些新用途均基于在 Web 上到处移动结构数据的标准表示,正如当前我们移动 HTML 页一样容易。数据标准是 XML 和 XML 扩展名。四、数据的结构表示XML 提供可以编码各种情况(从简单至复杂)的内容、语义和架构的数据标准,可被用于标注以下对象:(1)普通文档。(2)诸如约会记录

11、或采购定单之类的结构记录。(3)具有数据和方法的对象,如 Java 对象或 ActiveX 控件的持续型表单。(4)数据记录,如查询的结果集。(5)有关 Web 站点的元内容,如“频道定义格式 (CDF)” 。(6)图形表示,如应用程序的用户界面。(7)标准架构实体和类型。(8)Web 上的信息与用户之间的所有链接。一旦该数据在客户机桌面上,就可以在多个视图中处理、编辑和表示它,而无需返回到服务器。由于较低的计算量和带宽负载,所以目前的服务器更易于升级。此外,由于以 XML 格式交换数据,所以可以轻而易举地合并来自不同来源的数据。XML 对 Internet和大型企业的 Intranet 环境

12、是颇有价值的,这是由于 XML 提供使用灵活、开放、基于标准格式的互用性,并具备访问遗留数据库和将数据传输到 Web 客户机的新方式。可以更快地生成应用程序,应用程序更易于维护,并且可以在结构数据上轻易提供多种视图。五、XML 语言具体使用什么是 XML文档(举例一个简单的 xml文件)成龙男人喜剧功夫注意重点:(1)xml文件有且仅有一个根标记(2)其他标记必须封装在根标记中(3)文件的标记必须形成树状。(4)元素可以有属性(5)标签可以嵌套但不可以交叉各标记表示各数据项的含义(是否为 元素、 元素等等) ,而并不描述显示数据的次序和形式。此数据的所有接收者均可将该文档解码,以便用于自己的特

13、定目的。例如,某导演可以利用该信息安排成龙的角色,而某录入员可以将其作为成龙个人基本信息存入档案。XML文档XML 是一种基于文本的格式,在许多方面类似于 HTML,后者是专为存储和传输数据而设计的。然而,与 HTML 不同的是,XML 允许无限的标记集,各标记集并不表示如何显示,而是表示其含义。例如,可以将 XML 元素标记为价格、订单编号或名称(就如上边例子中的姓名性别一样,可以文档作者自由定义有实际含义的标签和数据) 。标记是对了文档存储格式和逻辑结构的描述。在形式上,标记有以下各种可能项:注释、引用、字符数据段、起始标记、结束标记、空元素、文档类型声明(DTD)和序言。每个 XML文档

14、都有一个逻辑结构和物理结构。 (1)从物理角度来看,文档由实体单元组成,一个实体也可以在其他文档的实体中被引用。一个文档以一个根元素或文档实体来开始。 (2)从逻辑上讲,文档由声明(declaration) 、元素(element) 、注释(comment) 、字符引用(character reference)和处理说明(processing instruction)组成。这些组成部分在文档的标记中必须明确规定。物理结构从另一角度来规范XML文档。在 XML文档中,除标记之外就是字符数据。XML 中的保留字符不能直接使用。例如,字复符“import org.xml.sax.*;import o

15、rg.xml.sax.helpers.*;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class Sax extends DefaultHandlerprivate String ElementName;private int id;private String Name;private String Age;private String Sex;private String Major;public Sax()this.ElementName = “;this.id =

16、 0;this.Name = “;this.Age = “;this.Sex = “;this.Major = “;/ 以下是 sax的解析步骤public void startDocument() throws SAXExceptionSystem.out.println(“-文件开始-“);public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXExceptionthis.ElementName = qName;if (qName.equals(

17、“Resumes“)System.out.println(“现在对个人简历进行解析“);public voidcharacters(char ch, int start, int length) throws SAXExceptionStringstr = new String(ch, start, length);if(this.ElementName.equals(“Name“) if(this.ElementName.equals(“Age“) if (this.ElementName.equals(“Sex“) if (this.ElementName.equals(“Major“)

18、public void endElement(String uri, String localName, String qName) throws SAXException if (qName.equals(“Name“) System.out.println(“姓名:ttt“ + this.Name);if (qName.equals(“Age“) System.out.println(“年龄:ttt“ + this.Age);if (qName.equals(“Sex“) System.out.println(“性别:ttt“ + this.Sex);if (qName.equals(“M

19、ajor“) System.out.println(“主修:ttt“ + this.Major);if (qName.equals(“Resume“) System.out.println();this.ElementName = “;public void endDocument()throws SAXExceptionSystem.out.println(“-文件结束-“);System.exit(0);public static void main(String args) throws ExceptionString path = “resume.xml“;try SAXParserF

20、actory factory = SAXParserFactory.newInstance();factory.setValidating(false);SAXParser parser = factory.newSAXParser();parser.parse(path,new Sax();catch (Exception e)System.err.println(e);System.exit(1);用 J2SE的运行过程和结果如下:D:java Sax.javaD:java Sax-文件开始-现在对个人简历进行解析姓名: 黄飞鸿年龄: 岁芳龄性别: 女主修: 表演魔术-文件结束-D:_DO

21、M解析 xml文件编程实例首先写一个.xml 文件:J2EE Programme begin BookBluce7-145-10241-377.8java程序:package all;/自己建的一个包import java.io.*; /Java基础包,包含各种 IO操作import javax.xml.parsers.*; /XML解析器接口import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;i

22、mport javax.xml.transform.stream.StreamResult;import org.w3c.dom.*; /XML的 DOM实现import org.apache.crimson.tree.XmlDocument;/写 XML文件要用到这个包需要导入 j2ee.jar包,具体方法在文章最后public class DomTest public static void main(String args) throws ExceptionString path = “brand.xml“;writeXmlTo(path);/ 写一个 xml文件addElementTo

23、XML(path);/ 增加元素到已知的 xmlmodify(path);/ 修改 xmlreadXML(path);/ 读一个 xml 文件/用 dom读 xml文件public static void readXML(String path)throws ParserConfigurationExceptionFile file = new File(path);DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocument

24、Builder();Document doc;trydoc= builder.parse(file);System.out.println(doc.getFirstChild();/ 取得第一个儿子的内容System.out.println(doc.getLastChild();/ 取得最后一个儿子的内容System.out.println(doc.getNamespaceURI();/ 取得名字空间System.out.println(doc.getElementsByTagName_r(“brand“).getLength();for (int i = 0; i 0) System.out

25、.println(“specialty is :“+ node.getElementsByTagName_r(“specialty“).item(0).getFirstChild().getNodeValue().trim();catch (IOException e)e.printStackTrace();catch (Exception e)e.printStackTrace();/把 xml写入到文件中去public static void writeXmlTo(String path) throws Exception DocumentBuilderFactory factory =

26、DocumentBuilderFactory.newInstance();DocumentBuilder builder = null;trybuilder = factory.newDocumentBuilder();catch (ParserConfigurationException pce)System.err.println(pce);System.exit(1);Document doc = null;doc = builder.newDocument();/ 根元素Element brands = doc.createElement(“Brands“);doc.appendChi

27、ld(brands);Element brand = doc.createElement(“brand“);brand.setAttribute(“country“, “Italy“);Element name = doc.createElement(“Name“);name.appendChild(doc.createTextNode(“Ferrari“);brand.appendChild(name);/ 从根元素中加子元素brands.appendChild(brand);/ 把 XML文档输出到指定的文件FileOutputStream outStream = new FileOutp

28、utStream(new File(path);OutputStreamWriter outWriter = new OutputStreamWriter(outStream);if (XmlDocument) doc) != null)(XmlDocument) doc).write(outWriter, “GB2312“);outWriter.close();outStream.close();/向已经存在的 xml加入新的元素public static void addElementToXML(String path) throws Exception DocumentBuilderFa

29、ctory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();File file = new File(path);Document doc;/ 申明 xml要加的元素Element brand;Element Specialty;trydoc = builder.parse(file);/ 插入操作brand = doc.createElement(“brand“);brand.setAttribute(“country“, “German

30、y“);Element name = doc.createElement(“Name“);name.appendChild(doc.createTextNode (“Benz“);brand.appendChild(name);Specialty= doc.createElement(“specialty“);Specialty.appendChild(doc.createTextNode(“豪华轿车“);brand.appendChild(Specialty);Node brands = doc.getElementsByTagName_r(“Brands“).item(0);brands.

31、appendChild(brand);FileOutputStream outStream = new FileOutputStream(new File(path);OutputStreamWriter outWriter = new OutputStreamWriter(outStream);(XmlDocument) doc).write(outWriter, “GB2312“);outWriter.close();outStream.close();catch (IOException e)e.printStackTrace();catch (Exception e)e.printSt

32、ackTrace();public static void modify(String path) throws ExceptionDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();File file = new File(path);Document doc;doc= builder.parse(file);NodeList allBook = doc.getElementsByTagName_

33、r(“brand“);Element brand = null;for (int i = 0; i 0)brand.getElementsByTagName_r(“specialty“).item(0).getFirstChild().setNodeValue(“豪华运动轿车“);break;TransformerFactory tf = TransformerFactory.newInstance();Transformer tr = tf.newTransformer();DOMSource ds = new DOMSource(doc);FileOutputStream outStrea

34、m = new FileOutputStream(new File(path);OutputStreamWriter outWriter = new OutputStreamWriter(outStream);StreamResult sr1 = new StreamResult(outStream);tr.transform(ds, sr1);最后用 j2se运行程序结果如下:D:javac DomTest.javaD:java DomTestFerrariBMW豪华运动轿车FerrariBMW豪华运动轿车null2brand is: Ferraricountry is: Italybran

35、d is: BMWcountry is: Germanyspecialty is: 豪华运动轿车下边最后说一下如何将 j2ee.jar包导入 j2se中:首先你可以将 j2ee.jar包拷贝至 C:Program FilesJavajdk1.5.0_06lib中的目录 lib下(这里只是提供一种方法,不一定放在在这个目录下,但是一般这个文件夹用来放 jar包)然后,我们来设置环境变量,步骤如下:右击我的电脑属性高级环境变量点击用户变量框下的 “新建(N)“按钮,在变量名输入 classpath,在变量值输入刚才拷贝 j2ee.jar文件所在地的全路径(也可以直接粘贴)C:Program FilesJavajdk1.5.0_06libj2ee.jar;注意后边一定有个分号,然后一步步确定即可

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报