六. 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. P2799国王的魔镜

    链接 想了好久(蒟蒻的不能蒟蒻) 题解: #include<iostream>#include<cstdio>#include<cstring>#include&l ...

  2. PAT 乙级 1047 编程团体赛(20) C++版

    1047. 编程团体赛(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 编程团体赛的规则为:每个参赛队由若 ...

  3. spring4.0之六:Generic Qualifier(泛型限定)

    Spring 4.0已经发布RELEASE版本,不仅支持Java8,而且向下兼容到JavaSE6/JavaEE6,并移出了相关废弃类,新添加如Java8的支持.Groovy式Bean定义DSL.对核心 ...

  4. 开发框架-Web-Java:JeePlus

    ylbtech-开发框架-Web-Java:JeePlus 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. http://www.jeeplus.org/ ...

  5. NodeJs使用async让代码按顺序串行执行

    描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...

  6. 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类

    1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ...

  7. 解决ExtNET ExtJS 特定日期选择月份跳转导致无法选择月份的问题

    背景 项目使用 Ext.NET 2.2.0.40838 , 对应Ext JS4.2版本. 结果 2017/3/31 号的时候偶然间点日历选择控件选择2月,10月等月份突然就跳到3月份,9月份之类. 就 ...

  8. JSP:注册&登录

    数据库:Mysql 除了_id自动增长,其余全是varchar 注册:register.jsp <%@ page language="java" import="j ...

  9. css实战第三天小结

    1.谈一谈对层级的理解: 如果对两个并列的子元素都设置了相对于同一个父元素(如果没有设置父元素那么默认相对于浏览器而言)进行了定位(相对定位),则这两个都具有相同的层级(默认为0),他们的trbl也默 ...

  10. PHP:导出数据到word(包含图片)

    1.方法 public function word() { $xlsModel = M('api_aliucheng'); $Data = $xlsModel->Field('id,u_name ...