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 } |