`

XML技术须知讲解

 
阅读更多

1、xml有哪些解析技术?区别是什么?

2、你在项目中用到了xml技术的哪些方面?如何实现的?

3、用jdom解析xml文件时如何解决中文问题?如何解析?

4、编程用JAVA解析XML的方式.

5、xml有哪些解析技术?区别是什么?

6、XML的作用和用途!

答:有DOM,SAX,STAX等
  DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问STAX:Streaming API for XML (StAX)

  2、你在项目中用到了xml技术的哪些方面?如何实现的?

  答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。

  3、用jdom解析xml文件时如何解决中文问题?如何解析?

  答:看如下代码,用编码方式加以解决
 

 package test;
  import java.io.*;
  public class DOMTest
  {
   private String inFile = "c:\\people.xml";
   private String outFile = "c:\\people.xml";
   public static void main(String args[])
   {
    new DOMTest();
   }
   public DOMTest()
   {
    try
    {
     javax.xml.parsers.DocumentBuilder builder=javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
     org.w3c.dom.Document doc=builder.newDocument();
     org.w3c.dom.Element root=doc.createElement_x("老师");
     org.w3c.dom.Element wang=doc.createElement_x("王");
     org.w3c.dom.Element liu=doc.createElement_x("刘");
     wang.appendChild(doc.createTextNode("我是王老师"));
     root.appendChild(wang);
     doc.appendChild(root);
     javax.xml.transform.Transformer transformer=javax.xml.transform.TransformerFactory.newInstance().newTransformer();
     transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312");
     transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");  
     transformer.transform(new javax.xml.transform.dom.DOMSource(doc),new javax.xml.transform.stream.StreamResult(outFile));
    }
    catch (Exception e)
    {
     System.out.println (e.getMessage());
    }
   }
  }


  4、编程用JAVA解析XML的方式.
答:用SAX方式解析XML,XML文件如下:
<wbr><br><wbr>   王小明<br><wbr>   信息学院<wbr><wbr><br><wbr>   6258113<br><wbr>   男,1955年生,博士,95年调入海南大学<br><wbr><br><wbr>  事件回调类SAXHandler.java<br> </wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

 import java.io.*;
  import java.util.Hashtable;
  import org.xml.sax.*;
  public class SAXHandler extends HandlerBase
  {
   private Hashtable table = new Hashtable();
   private String currentElement = null;
   private String currentValue = null;
   public void setTable(Hashtable table)
   {
    this.table = table;
   }
   public Hashtable getTable()
   {
    return table;
   }
   public void startElement(String tag, AttributeList attrs)
   throws SAXException
   {
    currentElement = tag;
   }
   public void characters(char[] ch, int start, int length)
   throws SAXException
   {
   currentValue = new String(ch, start, length);
   }
   public void endElement(String name) throws SAXException
   {
    if (currentElement.equals(name)) 
    table.put(currentElement, currentValue);
   }
  }


 


JSP内容显示源码,SaxXml.jsp:

<HTML>

<HEAD>

<TITLE>剖析XML文件people.xml</TITLE>

</HEAD>

<BODY>

<%@ page errorPage="ErrPage.jsp" contentType="text/html;charset=GB2312" %>

<%@ page import="java.io.*" %>

<%@ page import="java.util.Hashtable" %>

<%@ page import="org.w3c.dom.*" %> <%@ page import="org.xml.sax.*" %>

<%@ page import="javax.xml.parsers.SAXParserFactory" %>

<%@ page import="javax.xml.parsers.SAXParser" %>

<%@ page import="SAXHandler" %>

<%

File file = new File("c:\people.xml");

FileReader reader = new FileReader(file);

Parser parser;

SAXParserFactory spf = SAXParserFactory.newInstance();

SAXParser sp = spf.newSAXParser();

SAXHandler handler = new SAXHandler();

sp.parse(new InputSource(reader), handler);

Hashtable hashTable = handler.getTable();

out.println("<TABLE BORDER=2><CAPTION>教师信息表</CAPTION>"); out.println("<TR><TD>姓名</TD>" + "<TD>" + (String)hashTable.get(new String("name")) + "</TD></TR>");

out.println("<TR><TD>学院</TD>" + "<TD>" + (String)hashTable.get(new String("college"))+"</TD></TR>");

out.println("<TR><TD>电话</TD>" + "<TD>" + (String)hashTable.get(new String("telephone")) + "</TD></TR>");

out.println("<TR><TD>备注</TD>" + "<TD>" +

(String)hashTable.get(new String("notes")) + "</TD></TR>");

out.println("</TABLE>");

%>

</BODY>

</HTML>


XML的作用和用途!

1、数据交换
XML使用元素和属性来描述数据。在数据传送过程中,XML始终保留了诸如父/子关系这样的数据结构。几个应用程序可以共享和解析同一个XML文件,不必使用传统的字符串解析或拆解过程。相反,普通文件不对每个数据段做描述(除了在头文件中),也不保留数据关系结构。使用XML做数据交换可以使应用程序更具有弹性,因为可以用位置(与普通文件一样)或用元素名(从数据库)来存取XML数据。
2、Web服务
Web服务是最令人激动的革命之一,它让使用不同系统和不同编程语言的人们能够相互交流和分享数据。其基础在于Web服务器用XML在系统之间交换数据。交换数据通常用XML标记,能使协议取得规范一致,比如在简单对象处理协议(SimpleObjectAccessProtocol,SOAP)平台上。SOAP可以在用不同编程语言构造的对象之间传递消息。这意味着一个C#对象能够与一个Java对象进行通讯。这种通讯甚至可以发生在运行于不同操作系统上的对象之间。DCOM,CORBA或JavaRMI只能在紧密耦合的对象之间传递消息,SOAP则可在松耦合对象之间传递消息。
3、内容管理
XML只用元素和属性来描述数据,而不提供数据的显示方法。这样,XML就提供了一个优秀的方法来标记独立于平台和语言的内容。使用象XSLT这样的语言能够轻易地将XML文件转换成各种格式文件,比如HTML,WML,PDF,flatfile,EDI,等等。XML具有的能够运行于不同系统平台之间和转换成不同格式目标文件的能力使得它成为内容管理应用系统中的优秀选择。
4、Web集成
现在有越来越多的设备也支持XML了。使得Web开发商可以在个人电子助理和浏览器之间用XML来传递数据。为什么将XML文本直接送进这样的设备去呢?这样作的目的是让用户更多地自己掌握数据显示方式,更能体验到实践的快乐。常规的客户/服务(C/S)方式为了获得数据排序或更换显示格式,必须向服务器发出申请;而XML则可以直接处理数据,不必经过向服务器申请查询-返回结果这样的双向“旅程”,同时在设备也不需要配制数据库。甚至还可以对设备上的XML文件进行修改并将结果返回给服务器。想像一下,一台具有互联网功能并支持XML的电冰箱将会给市场带来多么大的冲击吧。你从此不必早起去取牛奶
了!
5、配制
许多应用都将配制数据存储在各种文件里,比如.INI文件。虽然这样的文件格式已经使用多年并一直很好用,但是XML还是以更为优秀的方式为应用程序标记配制数据。使用.NET里的类,如XmlDocument和XmlTextReader,将配制数据标记为XML格式,能使其更具可读性,并能方便地集成到应用系统中去。使用XML配制文件的应用程序能够方便地处理所需数据,不用象其他应用那样要经过重新编译才能修改和维护应用系统。如前所述,这里提到的五种使用XML的途径不包括全部场合。

分享到:
评论

相关推荐

    5日学会动态HTML.

    总之,《5日学会动态HTML》是一本为初学者量身定制的指南,通过深入浅出的讲解,帮助他们快速掌握DHTML的核心概念和技术,从而开启网页开发的旅程。通过系统学习,读者不仅可以了解HTML、CSS、JavaScript和DOM的基本...

    传智播客2010版.Net全部教学课件

    这些课件不仅包含了深入浅出的技术讲解,还配以实际操作演示,旨在帮助广大的.NET爱好者和学习者全面掌握.NET框架的应用与开发技巧。 ### .NET技术简介 .NET框架是由微软公司开发的一个多语言、统一的编程平台,它...

    web前端工程师入门须知 推荐

    AJAX(Asynchronous JavaScript and XML)技术使***ript可以异步地从服务器获取数据,无需重新加载整个页面,这为提升用户体验和网站性能提供了可能。 此外,web前端工程师还需关注浏览器的兼容性问题。由于浏览器...

    jquery+css3实现的点击无刷新产品相册切换效果源码.zip

    - 这种效果通常是通过AJAX(Asynchronous JavaScript and XML)技术实现的,但现代Web开发中,更多使用的是JSON而非XML。利用jQuery的AJAX方法,如`$.ajax()`或`$.get()`,可以在后台加载新数据而无需重新加载整个...

    JS实现的图片跟随鼠标三维立体展示特效源码.zip

    以下将详细讲解涉及的技术点和实现方法: 1. **JavaScript基础**: JavaScript是一种广泛应用于网页和网络应用的脚本语言,它在客户端运行,可以动态更新内容、处理用户输入以及与服务器进行交互。在这个项目中,...

    JavaScript

    非诚勿扰-实体班现场授课揭秘.pdf可能是实体课程的资料,包含了课程大纲、重点讲解内容或者学员须知。2010年4月20日_Net就业班就业统计数据.rar可能包含.NET培训就业情况的历史数据,对于评估培训效果和就业市场趋势...

    ssm整合配置

    下面将详细讲解SSM整合的基本原理、配置过程以及相关知识点。 1. **Spring框架**:Spring是Java领域的一个全功能框架,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, ...

    CSS教程(含DIV+CSS布局大法)

    CSS,全称Cascading Style Sheets,是一种样式表语言,用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的呈现。CSS控制网页的布局,定义字体、颜色、大小、间距等视觉效果,使得内容与表现分离,提高了...

    Java EasyCms框架.zip

    1. **使用须知.txt**:这是一个文本文件,通常会包含关于如何安装、配置和使用EasyCms框架的重要信息。文件可能涵盖以下几个关键知识点: - 安装步骤:指导用户如何将框架部署到服务器环境,包括JDK版本要求、...

    TweenMax.js + SVG 实现的飞碟UFO不明飞行物动画效果源码.zip

    在本项目中,"TweenMax.js + SVG 实现的飞碟UFO不明飞行物动画效果源码.zip" 是一个利用JavaScript库TweenMax和SVG(Scalable Vector Graphics)技术创建的动画示例。这个压缩包包含了一个实现飞碟UFO动画效果的源...

    javascript中文手册

    它通常嵌入HTML代码中,用于实现动态内容、交互式用户界面以及Ajax(异步JavaScript和XML)技术。由于其易学性和强大的功能,JavaScript已经成为现代Web开发不可或缺的一部分。 JavaScript中文手册是一份全面的参考...

    纯CSS3+SVG实现朋克(Punk)风格的卡通小人行走动画源码.zip

    下面我们将详细讲解其中涉及的技术点。 首先,CSS3(Cascading Style Sheets Level 3)是CSS的最新版本,提供了丰富的样式控制和增强的动态效果。在这个项目中,CSS3被用来创建动画效果。关键帧动画(@keyframes)...

    jQuery+SVG实现的页面弹出窗口动画特效源码.zip

    以下是对这个主题的详细讲解: **jQuery库** jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。jQuery的核心特性包括选择器,允许开发者高效地选取DOM元素;链式操作,使...

    python-guide

    - **使用须知**:明确了用户在使用文档时应遵循的规定。 综上所述,《Python学习指南》是一份全面且实用的文档,不仅适合Python初学者入门,也能为经验丰富的开发者提供有价值的参考。通过学习和应用这些指南中的...

    PHP实例开发源码—php使用Iframe无刷新上传的代码.zip

    本实例通过Iframe技术实现了这一功能,下面将详细讲解其工作原理和核心代码。 首先,理解Iframe(Inline Frame)的基本概念。Iframe是HTML中的一种元素,允许在网页上嵌入另一个HTML文档,从而在不刷新整个页面的...

    PHP实例开发源码-google php多重搜索工具.zip

    8. **使用须知.txt**:此文件可能是项目说明文档,包含了如何安装、配置和使用这个多重搜索工具的详细步骤。阅读并遵循这些指示是成功运行项目的关键。 9. **132699125842230676**:这是一个看似随机的文件名,可能...

    JavaScriptjiaocheng

    在《JavaScript教程.exe》这个文件中,可能包含了以上知识点的详细讲解,通过阅读和实践,可以系统地学习JavaScript的基础和进阶知识。同时,"使用须知.htm"可能是教程的使用指南,包含了如何启动教程、注意事项、...

    纯CSS3实现掉落的三明治动画效果源码.zip

    以下是对这个主题的详细讲解: 1. **CSS3关键帧动画**:三明治掉落动画的核心技术是CSS3的关键帧动画(@keyframes)。通过定义动画的不同阶段,我们可以让元素从一种状态平滑地过渡到另一种状态。在这个案例中,...

    Hutool (Java基础工具类).zip

    在“使用须知.txt”中,通常会详细讲解如何引入Hutool到项目中,无论是Maven、Gradle还是直接引入jar包,都会有清晰的步骤指导。文件中可能会包括Hutool的最新版本号,以及如何配置依赖,例如在Maven的pom.xml文件中...

Global site tag (gtag.js) - Google Analytics