关于XML方面的面试题及答案

发布时间:2016-10-24 00:00:00 编辑:嘉辉 手机版

  XML指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。下面YJBYS小编为大家整理了关于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(new javax.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文件如下:

  王小明

  信息学院

  6258113

  男,1955年生,博士,95年调入海南大学

  事件回调类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:

本文已影响871
+1
0