六. XML 部 分
1 、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("老师");
org.w3c.dom.Element wang =
doc.createElement("王");
org.w3c.dom.Element liu =
doc.createElement("刘");
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(newjavax.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
文件如下:
<?xml version=1.0 encoding=gb2312?>
<person>
<name>王小明</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1955年生,博士,95年调入海南大学</notes>
</person>
事件回调类 SAXHandler.java
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(newString(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>
5 、XML
文 档 定 义 有 几 种 形 式 ? 它 们 之 间 有 何 本 质 区 别 ? 解析 析
XML 文 档 有 哪 几
种 方 式 ?
a: 两种形式
dtd schema,b:本质区别:schema
本身是 xml 的,可以被
XML 解析器解析(这
也是从 DTD 上发展
schema 的根本目的),c:有
DOM,SAX,STAX 等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由
DOM 的树结构所造成的,
这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML
的随机访问
SAX:不现于
DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取
XML 文件,不需要一
次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触
发一个事件,用户通过在其回调事件中写入处理代码来处理
XML 文件,适合对 XML 的顺
序访问
STAX:Streaming API forXML (StAX)

XML 试题的更多相关文章

  1. xml-xml试题

    ylbtech-doc:xml-xml试题 xml试题 1.A,xml试题返回顶部 01.{XML题目}关于XML声明正确的是.(选择1项) A)<!xml version=”1.0”!> ...

  2. Java程序员的10道XML面试题

    包括web开发人员的Java面试在内的各种面试中,XML面试题在各种编程工作的面试中很常见.XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准.XML面试问题包括用于转换XML文件的X ...

  3. Java程序员的10道XML面试题 (转)

    包括web开发人员的Java面试在内的各种面试中,XML面试题在各种编程工作的面试中很常见.XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准.XML面试问题包括用于转换XML文件的X ...

  4. XML+JSON面试题都在这里

    XML+JSON常见面试题 什么是JSON和XML 什么是JSON和XML JSON:JavaScript Object Notation [JavaScript 对象表示法]. XML:extens ...

  5. .NET笔试题(关于迭代的:遍历XML中的FileName)

    一.使用迭代算法,遍历XML文件中所有的文件名 写一个函数返回文件名集合 在主函数中调用该方法: 以后有关迭代的都写到这儿

  6. 经典面试题:一张表区别DOM解析和SAX解析XML

                                                                                 ============DOM解析    vs ...

  7. Java面试题 OOAD & UML+XML+SQL+JDBC & Hibernate

    二.OOA/D 与UML 部分:(共6 题:基础2 道,中等难度4 道) 96.UML 是什么?常用的几种图?[基础] 答:UML 是标准建模语言:常用图包括:用例图,静态图(包括类图.对象图和包图) ...

  8. 笔试题之xml

    XML部分 1.xml有哪些解析技术?区别是什么? 答:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM ...

  9. 面试题:J2EE中web.xml配置文件详解 背1

    一.web.xml是什么 web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是Web应用的配置文件,是Web应用的基础. 二.web.xml加载流程 总的来说:ServletCont ...

随机推荐

  1. Gerrit安装

    1.安装gerrit [sisi@pre-srv44 ~]$ su - gerrit2Password: [gerrit2@pre-srv44 ~]$ lltotal 83872-rw-r--r-- ...

  2. 使用jquery.mCustomScrollbar自定义滚动条(1)

    参考博客:https://blog.csdn.net/cdnight/article/details/41351505 api网址:http://manos.malihu.gr/jquery-cust ...

  3. Springboot监控之二:Spring Boot Admin对Springboot服务进行监控

    概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...

  4. 服务容错保护断路器Hystrix之一:入门示例介绍(springcloud引入Hystrix的两种方式)

    限流知识<高可用服务设计之二:Rate limiting 限流与降级> 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的 ...

  5. Ajax传参讲解

    客户端和服务器 1.请求:request 2.响应:response 服务器响应事件:onreadystatechange() send() 用于向后台传递参数: Ajax的请求方式 get:    ...

  6. 关于解决logging模块写出的日志信息重复的问题

    一般情况下,我们在利用logging模块记录日志的时候,往往会利用下面这种方式进行日志信息的记录: import logging def logger_file(): #生成logger对象 whw_ ...

  7. [UE4]AIPerception,AI感知

  8. POJ K-th Number

    [题解] 数据结构采用线段树.通过将数组的每一段归并排序来建树.将数组排序来实现离散化. 时间复杂度分析:建树的过程就是归并排序,其时间复杂度为O(nlog(n)).查询时:二分查找第k小元素的复杂度 ...

  9. 汽车车牌JS正则表达式验证(含新能源车牌)

    /** * 第一:普通汽车 * 车牌号格式:汉字 + A-Z + 5位A-Z或0-9( 车牌号不存在字母I和O防止和1.0混淆) * (只包括了普通车牌号,教练车,警等车牌号 .部分部队车,新能源不包 ...

  10. C语言:冒泡排序

    void sort(int arr[],int len) { ; ; i<len; i++) { printf("第%d轮:\n", i); // len-i+1:新轮比上轮 ...