科帮网

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > java使用dom4j解析xml并展示demo(科帮网)
总共48087条微博

动态微博

查看: 2139|回复: 2

java使用dom4j解析xml并展示demo(科帮网)

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-01-26 19:45:01 |只看该作者 |倒序浏览
    java使用dom4j解析xml并展示demo(科帮网):stuName.xml:
    & @( f7 Q9 M4 P5 k9 H8 S- i4 ~
    0 N. c. B& o8 B) Y( V: X; x
    1. <?xml version="1.0" encoding="UTF-8"?>
      & O# K# l0 L+ d& W% [
    2. <result>0 @' e. \- T6 ~( z. X
    3.         <question>. ~" }3 N/ K* G& \9 X9 _$ B
    4.                 <code>001</code>
      4 n6 y' l6 Y' N, A# s$ s
    5.                 <name>张三</name>
      # M1 `  S, T* X5 c0 N
    6.         </question>& F6 e4 r3 G/ s+ r& B1 z
    7.         <question>
      ! u" C- K  X. j1 g# w
    8.                 <code>002</code>
      % Y/ o& ^4 R) R$ z! l
    9.                 <name>李四</name>
      4 D. ]- M7 s. O: j# x
    10.         </question>. y. S3 i$ z2 g
    11.         <question>* `& O3 U( k0 o& W
    12.                 <code>003</code>$ b8 {1 |8 @( n+ q! z
    13.                 <name>王二</name>( u# `" ?9 b3 r* J
    14.         </question>' {6 F: X- c5 n4 P; I
    15.         <question>4 @3 ]7 ~1 y* `3 \( n& j* e: k* B
    16.                 <code>004</code>6 f9 r1 c* [1 v; ~3 c
    17.                 <name>麻子</name>1 F# o, `% M" L- P' ]
    18.         </question>
      ( f7 {& Z9 }9 u( x+ g2 f
    19.         <question>* a( K% u; h5 J- X* ^
    20.                 <code>005</code>( B7 }' i* I0 m/ V( L; c; w( u3 m, u
    21.                 <name>科帮网</name>
      3 X8 d& `! u$ G; T
    22.         </question>
      & v% x  ^/ v+ U8 F
    23. </result>
    复制代码
    XmlReadUtil.java:读取方法
    % q7 O0 V+ V! H& B4 _; }
    1. package com.itstyle.util;" l1 V3 F" M0 P6 ^, i) r

    2. ) M: F# ^; x: C  D, I
    3. import java.io.File;
      : O0 N. j& O' Y. T9 x( n0 I
    4. import java.util.Iterator;1 x1 i' `, _/ c) ]  h" L8 g# y$ i
    5. import java.util.Map;; E. b# U( d; `+ ^6 }$ m
    6. / O5 X% t* H' _
    7. import org.dom4j.Attribute;' ^' n1 l  w- I! A3 L; N9 I
    8. import org.dom4j.Document;
      8 ]( c. w& v1 F+ V% Y# g
    9. import org.dom4j.Element;
      * o8 L' o' ^) a1 Z; |7 f
    10. import org.dom4j.io.SAXReader;
      2 \6 T7 @* E# B) W
    11. /**- U; u, V; i; A* y: p" n; c
    12. * 4 q& Y7 l! o3 S* ^( z* K
    13. * @author 科帮网(www.52itstyle.com)6 c' _% {2 n  w+ f4 F- D/ Q" H
    14. ** I4 K" ?& b1 |6 E  U9 H& R5 Y
    15. */3 Q! ]* l7 Z% t) O
    16. public class XmlReadUtil {
      9 j2 K5 R( b- W1 d
    17.         @SuppressWarnings("rawtypes")
      : E9 E8 `! U6 ?& f$ |% N: Q. R
    18.         public static void listBaseInfo(String filePath, Map<String, String> map) {" [6 h( l3 d# N, a; ?8 W
    19.                 SAXReader saxReader = new SAXReader();6 Y9 a2 G* ?! U0 e7 \1 e
    20.                 try {
      " k8 f6 D2 C9 g4 {  J/ r. \
    21.                         Document document = saxReader.read(new File(filePath));
      & i$ o2 i+ F, \' i  j% f4 l
    22.                         Element root = document.getRootElement();
      ! Q! P+ J8 T; c/ l/ Y  b' h
    23.                         // 用于记录信息编号的变量& ^  M1 p- H3 J8 y
    24.                         int num = -1;
      + f' {  C7 c" j1 w) N1 T
    25.                         // 遍历根结点(result)的所有孩子节点(肯定是question节点)
      4 {  v: r* j& [. [: h. q+ {7 D" Z
    26.                         Attribute attrCode = root.attribute("code");
      1 K- V7 A4 N  E% W* c* B7 Z
    27.                         Attribute attrName = root.attribute("name");; {& f6 s! x. J$ K) T1 M* `
    28.                         if(attrCode!=null){
      # @  {/ `6 \! I: H7 T; l" f
    29.                                 map.put(root.getName()+"-"+attrCode.getName(), attrCode.getValue());+ @' p% L% F4 y4 w
    30.                         }
      & z* r+ q6 w' n' q7 b* `
    31.                         if(attrName!=null){1 `1 P( ^: n" m: l+ Y4 o* C2 L+ [" c
    32.                                 map.put(root.getName()+"-"+attrName.getName(), attrName.getValue());+ |* j& M. r  O% U; |% z
    33.                         }6 U) s& O% U% i3 S- s) ?# K4 E# f
    34.                         for (Iterator iter = root.elementIterator(); iter.hasNext();) {
      & x6 O, d# M. X! B0 X3 y
    35.                                 Element element = (Element) iter.next();- J1 e" z* S8 R- W5 \  N4 C( K
    36.                                 num++;
      8 N  u) t! }  F8 F$ G, p
    37.                                 // 遍历question结点的所有孩子节点(即code, name),并进行处理
      5 M" ~* ~0 Q7 ?( w  n; N8 A
    38.                                 for (Iterator iterInner = element.elementIterator(); iterInner
      ) W4 M. d( B3 `2 b7 Q# L
    39.                                                 .hasNext();) {4 [- ]# K( L3 @  Q9 R/ n+ L9 `4 J) b
    40.                                         Element elementInner = (Element) iterInner.next();
      " V( s  Q6 y! N+ w: W
    41.                                         map.put(elementInner.getName() + num,
      4 _& w! r1 d+ ]/ t. K
    42.                                                         elementInner.getText());0 b) Y( R/ k4 s! ^2 b) U
    43.                                 }% ~7 n. j, r% f5 c1 z/ c8 l
    44.                         }
      ' E; ]. e: u$ o9 G9 Y' `# m8 r
    45. " z, ~% V) f& d' l
    46.                 } catch (Exception e) {
      7 Q+ v+ ^% x& K; I- I
    47.                         e.printStackTrace();
      . l6 @  i5 _! s
    48.                 }
      # Y6 n- U! F& S( N

    49. ( F. ]+ Q4 l" @+ x" c" C
    50.         }
      / ~% O4 M- _5 p+ K
    51. }
      7 Q% u& P  z6 c: e; M/ {
    复制代码
    ReadXmlServlet.java:
    " e# e) D* z% M- c  m
    1. package com.itstyle.servlet;1 X' U( d" J" O- S8 C2 o9 P8 A, T

    2. 9 Y; u1 U9 K: w
    3. import java.io.IOException;. z. {# q1 a' g7 n- Z0 s5 G
    4. import java.io.PrintWriter;
      , g2 `. F% G9 J2 q5 X6 {) l
    5. import java.util.ArrayList;" O/ m& D8 {8 B
    6. import java.util.List;( i$ @8 N6 u0 e4 e$ M& Y% c% {0 |8 |6 V. A
    7. & v8 h4 C: u1 z! \- H
    8. import javax.servlet.ServletException;
      / X/ t. ]. D& i  v* R
    9. import javax.servlet.http.HttpServlet;
      # Q9 }/ B1 H( Q8 c) u) G
    10. import javax.servlet.http.HttpServletRequest;& z1 R/ F/ }6 L2 t6 q# Q7 M
    11. import javax.servlet.http.HttpServletResponse;# z: X& \" V  Z- i5 m$ B
    12. ) K4 C+ W$ W' W6 e+ M4 O' G
    13. import net.sf.json.JSONArray;
      9 T4 C7 f2 \! F4 f
    14. import net.sf.json.JSONObject;: q  A, N' W: O8 s5 f2 q* t

    15. $ ~# M' z$ V% d; G# M
    16. import com.itstyle.model.CommonEntity;
      : X4 f/ U1 I+ s. p% q5 f- X
    17. import com.itstyle.util.PropertiesListUtil;2 A, F* L' X9 W8 N
    18. /**
      # Y* R( ^% a- d. ]/ s/ k, i4 b2 p
    19. * % \2 i$ _5 e. b% K7 |. z" j* }
    20. * @author 科帮网(www.52itstyle.com)
      0 F$ p5 h/ \0 q2 B$ g! w
    21. *; U, A. h0 j: {, O: Q; V$ r
    22. */
      # n2 o5 s% K" D) d  V
    23. public class ReadXmlServlet extends HttpServlet {7 l' L7 r+ y$ i! m& T
    24.   x" p" s4 s' d$ S5 T
    25.         private static final long serialVersionUID = 1L;
      / I7 ~- T6 @: t$ @' Z. R
    26.         private List<CommonEntity> listStu = new ArrayList<CommonEntity>();
      % M$ d+ k% b+ I
    27.         public void init() throws ServletException {: R6 c7 F6 J0 N+ R! M
    28.                 // 初始化阶段xml
      * Y3 k8 J% M! w) P2 X5 ^
    29.                 String path = getServletContext().getRealPath("/file/stuName.xml");0 C& X0 T2 f" V" S2 f1 C/ D
    30.                 try {- J5 Z( v( c2 H- U
    31.                         listStu = PropertiesListUtil.listXml(path);4 B6 o, f( g4 }& A# [2 _
    32.                         System.out.println(listStu.size());: s6 v0 |0 j2 Y: {8 B
    33.                 } catch (Exception e) {
      # ^( N2 R* j2 t" y
    34.                         e.printStackTrace();
      ' z& B) J/ m4 e, V/ X
    35.                 }% e$ l6 h4 D! h! j
    36.         }
      + z2 E3 S1 F1 P* l: g. c- O  w
    37.         public void doGet(HttpServletRequest request, HttpServletResponse response)3 `2 ~& X) j$ Z0 p) Y3 `/ C
    38.                         throws ServletException, IOException {! p. G! w8 v& ?
    39.                 JSONArray array = new JSONArray();; ]: p. `$ G( L3 Q5 t6 a9 i5 r
    40.                 response.setCharacterEncoding("UTF-8");2 N& [: x' @! z* o2 }, j# U
    41.                 PrintWriter out = response.getWriter();
      8 H% z* r& L7 q3 F# l7 j
    42.                 try {
      ; U9 H4 r# [4 D" h, x! R# c
    43.                         for(CommonEntity entity:listStu){( q) ?& e# j9 t& T
    44.                                 JSONObject obj = new JSONObject();
      - n5 ]5 B4 L/ o: ]& v
    45.                                 obj.put("code", entity.getEntityCode());
      1 F  y- J& n% e1 U6 g$ J8 J
    46.                                 obj.put("name", entity.getEntityName());
      . y* G; R% r; o; I( d# B' x) d7 r' U
    47.                                 array.add(obj);# g) e+ H: w; {& H3 c! j5 {( c
    48.                         }, d1 i( P- B9 y  R/ c
    49.                         out.print(array.toString());6 D( b+ S% I1 a2 r. y
    50.                 }catch (Exception e) {3 y5 @2 Z& y8 |- y) x
    51.                         e.printStackTrace();
      % \/ \, V+ c3 a) C9 G$ ~
    52.                 } finally {
      2 C! T) X  ]9 s! x: ~
    53.                         out.close();6 c# r# Y1 A% G3 g( J; Z
    54.                 }
      & e; E2 Y& X  r; B4 Y
    55.         }
      / M! m( @: Q) g

    56. 5 C7 [" N& x4 p6 ~8 D# C
    57.         public void doPost(HttpServletRequest request, HttpServletResponse response)$ C4 u6 q& X- }; B
    58.                         throws ServletException, IOException {
      6 R4 q, q; u0 e& U6 P8 R
    59.                 doGet(request, response);
      " x$ ?! |) e8 O. M1 b
    60.         }
      ) `3 X" B* e- H4 W9 w: P4 d8 t3 b

    61. ; D( G: w1 V6 V3 S8 f3 P$ K- C
    62. }
      5 S; z9 m# i4 q# ]3 A
    复制代码
    $ x" ~  M  n8 L" M' r: @( o+ `
    java使用dom4j解析xml并展示demo(科帮网)下载:点击下载
    $ e* L0 f: r3 {" }
    / g6 u5 U  L0 h9 _: q. U  c+ W5 K- c0 p' d8 T; ]  l

    / _8 ~0 l4 Q& V; S8 S# g
    2 t" O3 b) @. C8 x5 d& R7 J

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    1

    主题

    3

    听众

    341

    金钱

    四袋长老

    该用户从未签到

    沙发
    发表于 2016-03-17 21:49:58 |只看该作者

    $ _8 t5 ?7 a# X% j0 `; m. o+ J下来,学习一下。谢谢
    回复

    使用道具 举报

    woniu 实名认证   

    2

    主题

    0

    听众

    330

    金钱

    四袋长老

    该用户从未签到

    板凳
    发表于 2016-04-12 11:46:39 |只看该作者
    这个项目太棒勒!下下来学习下!
    回复

    使用道具 举报

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

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表