a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 119|回复: 1

[考试试题] Java笔试预测题及答案(5)

[复制链接]
发表于 2012-8-4 12:33:16 | 显示全部楼层 |阅读模式
 Xml方面   1、xml有哪些解析技术?区别是什么?6 m4 D+ A% l/ R5 {: E
. k: \( F! Q( T! `& u: U; [1 {0 j
  答:有DOM,SAX,STAX等, U; F8 A6 T# G$ I  y
  DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问STAX:Streaming API for XML (StAX)
; S5 {" z) l4 G  2、你在项目中用到了xml技术的哪些方面?如何实现的?
. l7 Q4 v0 n% n7 r+ ~  w2 `9 P. P9 G9 x
  答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。7 H3 B# t+ ~, b8 Z  b

* v2 _0 h! g% \" p: C  3、用jdom解析xml文件时如何解决中文问题?如何解析?6 P4 Z3 I# [+ n

' L  N4 ]+ s! I$ L1 d, U  答:看如下代码,用编码方式加以解决
1 K' {/ x: @, p  package test;
1 i" |* X6 M4 @. |5 l3 ^9 a  import java.io.*;
' s, |6 l$ V% W  public class DOMTest
9 r# r5 Y7 }. M9 B6 N2 l  {% {$ F4 J2 v' d1 D/ }: q
   private String inFile = "c:\\people.xml";
$ R6 M" \: B' m: G( w" v/ Y   private String outFile = "c:\\people.xml"; ; U6 r* G" Q" w/ s9 O7 O
   public static void main(String args[])4 ]+ t8 W* K5 D
   {
% X& T5 |  a6 S- T    new DOMTest();+ ~6 {6 t9 C- k  n: t# ^$ p
   }/ Q, I' M* ]! g, |2 m! \
   public DOMTest()
- I! K+ R1 f$ z$ q4 r! O) N5 I. \   {
6 \3 u( W7 F( z    try " _6 @% a: X8 m' x5 d8 o/ _! x0 e
    { 6 t$ x  L1 d5 ?6 H" Q
     javax.xml.parsers.DocumentBuilder builder=javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();3 J$ A/ {7 K+ [! G( P' x
     org.w3c.dom.Document doc=builder.newDocument();
2 d+ `" V6 a% M. I7 [5 l     org.w3c.dom.Element root=doc.createElement("老师");
2 y! s1 W: W6 J- o& o% [: C, h     org.w3c.dom.Element wang=doc.createElement("王");$ N( a$ i1 ^* R( \& g- X
     org.w3c.dom.Element liu=doc.createElement("刘");( P- |! y& S# M# O/ L1 [* r
     wang.appendChild(doc.createTextNode("我是王老师"));+ K; ?- g1 Y) L
     root.appendChild(wang);
) W" q& e. E- I- i     doc.appendChild(root);
7 ?( f2 E' _3 ]" [" o$ S) z     javax.xml.transform.Transformer transformer=javax.xml.transform.TransformerFactory.newInstance().newTransformer();+ H* \2 y1 s5 O
     transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); 7 m* r6 q& Y& d* }
     transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");   
" Y: ^6 d- c0 @4 c  l( d5 v) P     transformer.transform(new javax.xml.transform.dom.DOMSource(doc),new javax.xml.transform.stream.StreamResult(outFile));
. z7 `4 a& L( Q3 K7 Z8 j9 `4 s    }6 i9 _: O  e" n* _* m
    catch (Exception e)
4 e& z8 F4 O' {0 _8 d7 q    {
$ r& g& R5 d' P3 G     System.out.println (e.getMessage());" `( c1 B& e" {7 j2 J  l
    }, W* x3 O' Q4 n
   }
/ U( O- y3 H3 o/ H  Q  }
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:33:17 | 显示全部楼层

Java笔试预测题及答案(5)

</p>  4、编程用JAVA解析XML的方式.
( Q; p5 S" H( @5 o3 e- f2 b( e) v* c3 x0 \- {* j, K: a) w: o
  答:用SAX方式解析XML,XML文件如下:" |+ X$ j! l% v0 O' u
  
! ?6 {, k" c* \( }8 o* z    王小明 1 k# }; X: \- u2 L8 y
    信息学院   ) ~* \9 v/ r& u5 s! S/ s0 w
    6258113 % g9 x, X& L* Y) v
    男,1955年生,博士,95年调入海南大学
. P- E6 Q8 W0 V, a: ~  
6 @. f0 \% r5 @: q   事件回调类SAXHandler.java" a& I1 x6 I# b) _+ G. b% a% s/ P
  import java.io.*;
3 m& A( C3 S; V4 N  import java.util.Hashtable; % d' z) l6 D2 [% z
  import org.xml.sax.*;
6 R1 P7 R# H' e7 ]$ i0 f+ ]7 f  public class SAXHandler extends HandlerBase
  X7 O) N* b' a  q  {
' |- f# ~' }7 k) ]/ s  Q   private Hashtable table = new Hashtable();
* c8 `& L: ?0 r: O7 c   private String currentElement = null; ' U) h3 f" {3 m8 Z/ `7 Y7 }3 a
   private String currentValue = null; 7 L4 O& Y8 R- B% G
   public void setTable(Hashtable table) 1 D7 E9 L+ D& E4 Q9 c' ^5 r/ Y4 f
   { $ z0 a0 O/ T4 {6 u6 ~0 ^
    this.table = table;
/ i. n1 {; l9 o1 l8 ]$ s   }
, t4 p& \' f/ R   public Hashtable getTable()
' p. Y2 P$ ^* I& U1 E7 T$ }   { * Y8 w$ x" E8 k4 `7 E! |& s
    return table; - R; X& V3 G! W* C
   }
8 t4 h9 D, N3 G" E, b" G# s3 D   public void startElement(String tag, AttributeList attrs)
- X% o/ V7 |' F+ ~   throws SAXException
6 I7 ~' G* A! c' y$ t   {   ~7 X* A- D! i( Z( M+ w
    currentElement = tag;
/ d" Z) H8 ], V4 `! w/ d" H$ m$ D   }
5 r+ f. \5 K; @6 F  w   public void characters(char[] ch, int start, int length)
% k6 y  F+ `- A( \/ l; S   throws SAXException
( |  M/ @' C  }   {
# l: M+ n  b3 {: |! S1 n$ [   currentValue = new String(ch, start, length);
* l# o; h1 n- L3 g* `   } - |6 f4 w" X4 l+ E  T$ O" ]- m
   public void endElement(String name) throws SAXException
( p/ i! k* l- L9 A   {
* q2 p% _* k/ Q3 b    if (currentElement.equals(name))
7 q. t  @' Y" l& T# @+ x1 Y    table.put(currentElement, currentValue); 3 N( r' Z/ [6 h8 f
   } . v: j# [( B6 y; D8 T( x
  } . j) X6 p3 K1 f/ L0 K; s8 x1 E* s
JSP内容显示源码,SaxXml.jsp:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 10:15 , Processed in 0.278651 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表