六. 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. Intellij IDEA神器值得收藏的小技巧

    概述 Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜.出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intel ...

  2. vi命令【方向键】变字母键的解决方法

    vi命令[方向键]变字母键的解决方法   最近在SSH下玩Debian发现了一个有趣的现象,就是在一些个别版本的Debian镜像下,使用vi命令时会出现键盘输出出错的现象,使用方向键时会变成C,D等字 ...

  3. R语言数据挖掘相关包总结-转帖

    与数据挖掘有关或者有帮助的R包和函数的集合. 1.聚类 常用的包: fpc,cluster,pvclust,mclust 基于划分的方法: kmeans, pam, pamk, clara 基于层次的 ...

  4. ALGO-151_蓝桥杯_算法训练_6-2递归求二进制表示位数

    记: 进制转换 AC代码: #include <stdio.h> #define K 2 int main(void) { ; scanf("%d",&n); ...

  5. python3 urllib模块使用

    urllib模块使用 urllib.request urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=N ...

  6. 开发框架-.Net:Learun(力软敏捷开发)

    ylbtech-开发框架-.Net:Learun(力软敏捷开发) 1.返回顶部   2.返回顶部 1. 系统简介:(1)后台采用MVC+EF架构,前台使用Jquery+Bootstrap,界面美观大气 ...

  7. php的基本内容

    php是一门后台语言,不能直接用浏览器打开,浏览器是他的载体, php的环境时apache,我们现在用的时phpstudy的继承环境,文件目录应放在apache中的www的根目录下: js的环境为no ...

  8. [UE4]通过IP地址加入游戏

  9. Hive UDF作业

    说到这次作业,看似简单的几个步骤,对于我这样的菜鸟来说可真是一波三折啊.下面来说说这次的步骤和我遇到的问题. 首先准备工作,搭建好hive环境,保证hadoop集群是启动的.这个就不多说了. 第一步: ...

  10. kafka的几个简单操作

    怎么安装解压kafka这里就不多说了,从配置文件说起 我这里搭建的是三节点集群 master  slave1 slave2 修改server.properties 文件 把自己本地安装的zookeep ...