六. 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. SpringMVC拦截器配置

    1.首先在springmvc.xml中添加配置 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path=" ...

  2. gulp学习总结

    一.gulp使用-博客推荐: http://www.sheyilin.com/2016/02/gulp_introduce/ 二.gulp的作用 gulp是一个前端构建工具,它是一个工具框架,可以通过 ...

  3. SQL优化系列——查询优化器

    大多数查询优化器将查询计划用“计划节点”树表示.计划节点封装执行查询所需的单个操作.节点被布置为树,中间结果从树的底部流向顶部.每个节点具有零个或多个子节点 - 这些子节点是输出作为父节点输入的节点. ...

  4. tomcat操作

    一.启动 D:\tomcat8.5.9\bin\startup   或者  D:\tomcat8.5.9\bin\catalina start 关闭tomcat: D:\tomcat8.5.9\bin ...

  5. 笔记函数 - Ring0 Sleep()

    #define DELAY_ONE_MICROSECOND (-10) #define DELAY_ONE_MILLISEND (DELAY_ONE_MICROSECOND*1000) void Sl ...

  6. Scrapy学习篇(八)之settings

    Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...

  7. java.util.base64报错解决

    java.util.Base64 这个类,它是在 JDK 1.8 的时候加入的,之前版本的标准库没有这个类. eclipse更换jdk1.8就可以了了.

  8. Aspose.Word 输出表格后空格字符丢失的解决方法

    将datatable输出到word,执行如下代码. doc.MailMerge.ExecuteWithRegions(outDt); 执行完后发现第一列含前缀空格的字段值,空格字符被自动清除了. 解决 ...

  9. 0001 - Spring MVC中的注解

    1.概述 Spring MVC框架提供了功能强大的注解,大大简化了代码开发的同时也提升了程序的可扩展性 2.注解 2.1.@RequestMapping Spring MVC通过@RequestMap ...

  10. MySQL操作mysqldump命令详解

    --all-databases , -A导出全部数据库. --all-tablespaces , -Y导出全部表空间. --no-tablespaces , -y不导出任何表空间信息. --add-d ...