A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hejinzhong 中级黑马   /  2014-8-23 04:12  /  1070 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hejinzhong 于 2014-8-23 21:50 编辑

  1. package studentexam;

  2. import java.io.*;
  3. import java.util.List;

  4. import org.dom4j.*
  5. import org.dom4j.io.*;
  6. import org.junit.*;

  7. public class DOM4j_utils {

  8.         Document dm;

  9.         @Before
  10.         public void setUp() {
  11.                 SAXReader sr = new SAXReader();
  12.                 try {
  13.                         dm = sr.read("src/book.xml");
  14.                 } catch (DocumentException e) {
  15.                         // TODO Auto-generated catch block
  16.                         e.printStackTrace();
  17.                 }
  18.         }

  19.         @Test
  20.         // 获取某个节点的内容
  21.         public void Test1() {
  22.                 // 获取XML的根节点
  23.                 Element root = dm.getRootElement();
  24.                 // 获取所有的书名
  25.                 @SuppressWarnings("unchecked")
  26.                 List<Element> list = root.elements();

  27.                 // 这里遍历验证Elements获取的仅仅是其子节点
  28.                 // for (Element element : list) {
  29.                 // System.out.println(element.getName());
  30.                 // }

  31.                 Element bNode = list.get(1);
  32.                 Element aNode = bNode.element("作者");
  33.                 System.out.println(aNode.getText());
  34.         }

  35.         // 遍历所有元素节点
  36.         @Test
  37.         public void Test2() {
  38.                 // 获取根节点
  39.                 Element root = dm.getRootElement();
  40.                 // 递归遍历
  41.                 treeWalk(root);
  42.         }

  43.         private void treeWalk(Element root) {
  44.                 for (int i = 0; i < root.nodeCount(); i++) {
  45.                         Node node = root.node(i);
  46.                         if (node instanceof Element) {
  47.                                 System.out.println(node.getName());
  48.                                 treeWalk((Element) node);
  49.                         }
  50.                 }
  51.         }

  52.         // 修改某个元素节点的主体内容(修改价格)
  53.         @Test
  54.         public void Test3() {

  55.                 Element root = dm.getRootElement();
  56.                 // 下面是后去到售价节点,并赋值
  57.                 @SuppressWarnings("unchecked")
  58.                 List<Element> list = root.elements();
  59.                 Element bNode = list.get(1);
  60.                 Element sNode = bNode.element("售价");
  61.                 sNode.setText("80");
  62.                 // Element sNode = (Element) root.elements().get(1);

  63.                 myXMLWriter();
  64.         }

  65.         // 向指定元素节点中增加子元素节点
  66.         @Test
  67.         public void Test4() {
  68.                 Element root = dm.getRootElement();
  69.                 @SuppressWarnings("unchecked")
  70.                 List<Element> list = root.elements();
  71.                 Element bNode = list.get(0);
  72.                 Element sNode = bNode.element("售价");
  73.                 sNode.addElement("内部价").setText("50");

  74.                 myXMLWriter();
  75.         }

  76.         // 向指定元素节点上增加同级元素节点
  77.         @Test
  78.         public void Test5() {
  79.                 Element root = dm.getRootElement();
  80.                 @SuppressWarnings("unchecked")
  81.                 List<Element> list = root.elements();
  82.                 Element bNode = list.get(0);
  83.                 bNode.addElement("批发价").setText("80");

  84.                 myXMLWriter();
  85.         }

  86.         // 删除指定元素节点
  87.         @Test
  88.         public void Test6() {
  89.                 Element root = dm.getRootElement();
  90.                 @SuppressWarnings("unchecked")
  91.                 List<Element> list = root.elements();
  92.                 Element bNode = list.get(0);
  93.                 Element sNode = bNode.element("售价");
  94.                 sNode.remove(sNode.element("内部价"));

  95.                 myXMLWriter();
  96.         }

  97.         // 操作XML文件属性
  98.         @Test
  99.         public void Test7() {
  100.                 Element root = dm.getRootElement();
  101.                 Element bNode = (Element) root.elements().get(0);
  102.                 Element bnNode = bNode.element("书名");
  103.                 bnNode.addAttribute("ISBN", "黑马陈序员");

  104.                 myXMLWriter();
  105.         }

  106.         public void myXMLWriter() {
  107.                 try {
  108.                         XMLWriter xw = new XMLWriter(new FileOutputStream("src/book.xml"),
  109.                                         OutputFormat.createPrettyPrint());
  110.                         xw.write(dm);
  111.                         xw.close();
  112.                 } catch (UnsupportedEncodingException e) {
  113.                         // TODO Auto-generated catch block
  114.                         e.printStackTrace();
  115.                 } catch (FileNotFoundException e) {
  116.                         // TODO Auto-generated catch block
  117.                         e.printStackTrace();
  118.                 } catch (IOException e) {
  119.                         // TODO Auto-generated catch block
  120.                         e.printStackTrace();
  121.                 }
  122.         }
  123. }



复制代码

1 个回复

倒序浏览
总是直接copy代码不太好吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马