六. 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. windows 控制台cmd乱码(及永久修改编码)的解决办法

    注册 windows 控制台cmd乱码(及永久修改编码)的解决办法 转载 2017年11月02日 22:49:52 1067 windows 控制台cmd乱码的解决办法 我本机的系统环境: OS Na ...

  2. 数据仓库专题20-案例篇:电商领域数据主题域模型设计v0.2(改进意见征集中)

    一.电商分类(平台+自营+复合) (1)平台型电商:淘宝+天猫+百度Mall等: (2)自营型电商: 2.1 综合型:京东(早期)+当当(早期): 2.2 垂直型:好像这种类型越来越少了: (3)复合 ...

  3. 关于Dubbo面试问题

    一.默认使用的是什么通信框架,还有别的选择吗? 默认也推荐使用netty框架,还有mina. 二.服务调用是阻塞的吗? 默认是阻塞的,可以异步调用,没有返回值的可以这么做. 三.一般使用什么注册中心? ...

  4. 【maven】之使用import scope解决maven继承(单)问题

    想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.boot</groupId> ...

  5. 【spring boot】映射properties文件属性--到Java对象

    描述 将*.properties中的内容映射到java对象中: 主要步骤 添加 @Component 注解: 使用 @PropertySource 注解指定配置文件位置: 使用 @Configurat ...

  6. 微服务测试打桩/mock工具mountebank

    1,安装 Linux安装包,不用安装Node.js https://s3.amazonaws.com/mountebank/v1.10/mountebank-v1.10.0-linux-x64.tar ...

  7. HEAD插件安装

    简介 是一个HTML5编写的集群操作和管理工具,可以对集群进行傻瓜式操作,Head插件中可以显示集群的拓扑结构,执行索引和节点级别等操作,同时也可以输入RESTful命令和Elasticsearch交 ...

  8. MySQL 删除重复数据实例

    如何删除重复数据 业务场景:删除评论表中对同一订单同一商品的重复评论,只保留最早的一条. 查看是否存在对于同一订单同一商品的重复评论. SELECT order_id,product_id,COUNT ...

  9. linux下打开文件、编辑文本cat\gedit\nano

    cat: 文本编辑器:gedit.nano,要获得根权限,在前面加上sudo

  10. 给 Windows 文件菜单添加 "用XX程序打开" "用XX编辑" "用XX运行"

    有什么用就不用多说了,这可是个很有用的技巧.可以创造自己的文件格式,也可以给已有的文件添加多种打开方式 在注册表[HKEY_CLASSES_ROOT]下找到或者建立对应的扩展名 如果想对所有文件都生效 ...