XML简介
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签
优点:
1.XML文档的内容和结构完全分离
2.数据交换,可以利用xml在不同的语言,不同的系统之间进行数据交换
3.可扩展性。
4.配置。使用XML配制文件的应用程序能够方便地处理所需数据,不用象其他应用那样要经过重新编译才能修改和维护应用系统。
缺点:
1.在处理大量数据的时候效率低下。
2.定义繁琐,需要定义dtd,传输数据时还要加上很多结构化、规范化的冗余信息,相比起直接发接发送一串二进制数来讲,效率自然低了
xsl
XSL是指可扩展样式表语言 (EXtensible Stylesheet Language),是一种用于以可读格式呈现 XML 数据的语言。
就比如css相对于html一样,定义xml的展现方式
DTD
定义xml文件的规则。文件名以*.dtd结尾
schema
和dtd差不多,都是用来定义xml格式的。文件名以*.xsd结尾。本身就是xml文件,设计schema可以用XMLSpy这个工具
XML解析方式:
1.DOM——面向模型的。一次性把文件读到内存里,形成一颗DOM树,从内存中读取数据,适合比较小的文件
2.SAX——面向事件的,读一部分写一部分,流程性分析,比较适合大型的文件
DOM解析代码: package com.xmlParse; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class DOMParse { public void parse(InputStream in) throws Exception{ //创建一个文档解析工厂实例 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //根据解析工厂创建一个解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //将解析器将文件流转换为文档对象 Document doc = db.parse(in); //根据文档对象查找到 XML的根节点 Element root = doc.getDocumentElement(); //用循环将所的节点打印出来 for(Node node=root.getFirstChild();node!=null;node=root.getNextSibling()){ System.out.println("[节点名称:"+node.getNodeName()+",节点类型:"+node.getNodeType()+"]"); } //获取以student标记的所有节点元素 NodeList nlist = doc.getElementsByTagName("student"); for(int i=0;i<nlist.getLength();i++){ Element e = (Element)nlist.item(i); System.out.println("学号:"+e.getAttribute("id")+",姓名:"+e.getAttribute("name")); } //承机访问节点元素 Element stu=doc.getElementById("s001"); System.out.println("学号:"+stu.getAttribute("id")+",姓名:"+stu.getAttribute("name")); } public static void main(String[] args) { DOMParse dp = new DOMParse(); try { dp.parse(DOMParse.class.getResourceAsStream("../lxit.xml")); } catch (Exception e) { e.printStackTrace(); System.out.println("错误消息:"+e.getMessage()); } } }
2.SAX解析
1.实现类 package sax; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class EventParse extends DefaultHandler{ public EventParse() { super(); } //载入文档时回调些函数 public void startDocument() throws SAXException { } //当标签中有内容时,回调函数 public void characters(char[] ch, int start, int length) throws SAXException { } //当文档解析结束时,回调此函数 public void endDocument() throws SAXException { } //开始解析标记元素时,回调些函数 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { } } 2.解析类 package sax; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; public class TestEventParse { public static void main(String[] args) { // TODO Auto-generated method stub try{ //创建SAX 解析工厂实例 SAXParserFactory spf = SAXParserFactory.newInstance(); //得到SAX解析器 SAXParser sp = spf.newSAXParser(); //创建事件实例 EventParse ep = new EventParse(); //开始解析 sp.parse(TestEventParse.class.getResourceAsStream("student.xml"), ep); }catch(Exception ex){ System.out.println("解析出错:"+ex.getMessage()); } } }
3.dom4j解析(SAX方式)
import java.io.InputStream; import java.util.List; import org.dom4j.Document; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class Dom4jParse { public void parse(InputStream in) throws Exception { // 首先创建Dom4j的解析器 SAXReader sp = new SAXReader(true); // 通过saxreader 的parse 方法,将文件流转换为 文档模型 Document doc = sp.read(in); // 得到文档对象的根节点 Node root = doc.getRootElement(); // 选择结点进行解析 List nodes = root.selectNodes("/class/student"); for (Object o : nodes) { Node t = (Node) o; System.out.print("学生编号:" + t.selectSingleNode("@no").getText() + ",学生名称:" + t.selectSingleNode("@name").getText() + ",中间文本:" + t.getText() + "\n"); } } public static void main(String[] args) { Dom4jParse dp = new Dom4jParse(); try { dp.parse(Dom4jParse.class.getResourceAsStream("student.xml")); } catch (Exception e) { e.printStackTrace(); } } }
4.jdom解析(DOM方式)
import org.jdom.input.*; import org.jdom.Attribute; import org.jdom.Element; import org.xml.sax.SAXException; import java.io.*; import java.util.List; import org.apache.xerces.parsers.*; public class JDomDOM { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DOMBuilder builder = new DOMBuilder(); DOMParser parser = new DOMParser(); String path = "D:\\student.xml"; String output = ""; try { parser.parse(path); org.w3c.dom.Document domDocument = parser.getDocument(); org.jdom.Document jdomDocument = builder.build(domDocument); Element root = jdomDocument.getRootElement(); output += "This XML document's root node is: " + root.getName() + "\r\n"; List <Element> children = root.getChildren(); output += "The root has " + children.size() + " subNodes \r\n"; for(int i = 0; i < children.size(); i++){ Element node = children.get(i); output += "In the " + i + 1 + node.getName() + "subNode: \r\n"; List <Attribute> attrs = node.getAttributes(); for(int k = 0; k < attrs.size(); k++){ Attribute attr = attrs.get(k); output += "The " + k + 1 + "attribute is " + attr.getName(); output += " the value is: " + attr.getValue() + "\r\n"; } List <Element> childrenList = node.getChildren(); for(int j = 0; j < childrenList.size(); j++){ Element childNode = childrenList.get(j); output += "The " + j + 1 + "subNode is: " + childNode.getName(); output += " value is " + childNode.getValue() + "\r\n"; } } System.out.println(output); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
分享到:
相关推荐
### XML高级编程_第1章XML 简介:关键知识点解析 #### 1. 标记语言的历史与发展 标记语言起源于印刷出版时代,早期的标记被用于指导印刷工人如何排版,这一系列标记的集合便构成了标记语言。随着时间的发展,标记...
XML的核心目标是传输数据,关注数据的内容而不是表现形式,因此XML标签并不预定义,而是由使用者根据需求自定义。这种灵活性使得XML在跨平台数据交换和信息描述中扮演了重要角色。 XML的设计原则是自我描述性,意味...
### XML简介及应用 #### 一、XML与HTML的区别 1. **用途的不同**: - HTML:主要用于网页展示,其设计初衷是为了呈现文本信息,让浏览器能够解析并以友好的方式显示出来。 - XML:则更多地用于数据交换和存储。...
### XML简介 - 学生版 #### 引言 XML(Extensible Markup Language),即可扩展标记语言,是由万维网联盟(W3C)在1998年发布的标准,旨在解决HTML和SGML的一些不足之处。XML不仅是一种标记语言,更是一种元标记...
### IBM developerWorks 教程:XML简介 #### 关于本教程 本教程旨在为初学者提供一个全面且深入的学习XML的基础。XML(可扩展标记语言)是一种被广泛应用于数据存储和传输的标准格式,尤其适用于互联网上的数据...
1. XML简介,包括XML的起源和发展,它的主要功能和技术标准,以及在不同领域的应用情况。 2. XML基础语法,讲解XML文档的基本结构、元素、属性、注释等的编写规则。 3. DTD和XML Schema,学习如何定义XML文档的结构...
在第一章XML简介的教学中,我们首先会接触到XML的基本概念。XML文档由一系列的元素构成,每个元素都有开始标签和结束标签,如`<element>`和`</element>`,元素可以包含其他元素、文本内容或属性。XML文档必须遵循...
### XML简介及应用 #### 一、XML概述 **XML**(eXtensible Markup Language)是一种灵活且功能强大的标记语言,被广泛应用于电子商务以及其他需要在不同系统间交换数据的场景中。XML的主要特点包括其可扩展性、灵活...
在学习XML时,可以访问www.mldn.com这样的网站获取更多资源,包括视频教程(如060301_〖第03章:XML简介〗_第01题.wmv),深入理解XML的基础概念、解析方法、DOM(Document Object Model)、SAX(Simple API for XML...
XML,全称eXtensible Markup Language,是一种用于存储和传输结构化数据的标记语言,由W3C(World Wide Web Consortium)联盟开发并维护。它的设计目标是简化信息的共享和交换,尤其是在不同的系统之间。XML不是一种...
DTD和Schema是XML文档的约束和验证工具,它们定义了元素、属性和数据类型的规则,帮助确保XML文档的一致性和准确性。例如,一个XML文档可以用来描述一个公司的员工信息,包括员工的名字、职位、部门等,每个元素都是...
XML,即可扩展标记语言(Extensible Markup Language),是一种用于标记数据的语言,其设计目标是为了传输和存储数据,而非显示数据。与HTML不同,HTML的元素是预定义的,而XML允许用户根据需要自定义标签,这使得...
XML,即可扩展标记语言(eXtensible Markup Language),是一种基于文本的、层次结构的标记语言,主要用于描述数据的含义而非显示方式。在Java Web领域,Sun公司提供了关于XML和Java的详尽教程,这对于理解和应用XML...
XML(Extensible Markup Language)是一种标记语言,它设计的目标是传输和存储数据,而非显示数据。XML起源于1996年,由W3C(World Wide Web Consortium)组织制定,目的是为了统一互联网上的数据交换格式,使得不同...
XML,全称是eXtensible Markup Language,是一种用于标记数据的语言,它的设计目标是传输和存储数据,而不是展示数据。XML的出现主要是为了解决HTML在数据表示和扩展性上的局限。 HTML(HyperText Markup Language...
XML,全称Extensible Markup Language,可扩展标记语言,是在互联网数据交换中起着关键作用的一种格式化语言。它的出现旨在解决数据格式多样化导致的信息交换障碍,为用户提供了一种描述任何逻辑关系的数据格式,...
本章将深入介绍XML的基本概念、结构以及JavaScript如何操作XML DOM(Document Object Model)来处理XML文档。 一、XML基础 1. XML的定义:XML是一种自定义标记语言,它的设计目标是传输和存储数据,而不是显示数据...
在讨论XML(可扩展标记语言)之前,首先需要了解它是由W3C(World Wide Web Consortium)组织发布的标准,旨在以统一的格式组织和表示数据,以便为不同平台的应用程序服务。XML的主要用途包括用作配置文件、在Java ...
这一本质区别使得XML在数据交换和结构化数据管理中扮演着核心角色。 XML是一种标记语言,它的语法类似于HTML,但比HTML更为灵活。在XML中,开发者可以自定义标签来表示数据,这与HTML预定义的一系列标签(如`<p>`、...
#### 一、XML简介与TinyXML概述 - **XML**:全称为**可扩展标记语言**(EXtensible Markup Language),是一种用于标记数据的语言,允许用户自定义数据的标识,从而区分不同类型的结构化数据。XML主要用于数据交换,...