本文主要使用的是Jdom.jar包(包的下载百度一下)实现了生成xml文件和解析xml文件

下面是生成xml的实现

说明:stuLists集合是一个存放着Student对象的集合

  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6.  
  7. import org.jdom.Document;
  8. import org.jdom.Element;
  9. import org.jdom.input.SAXBuilder;
  10. import org.jdom.output.Format;
  11. import org.jdom.output.XMLOutputter;
  12.  
  13. public class AddXml {
  14. public static void main(String[] args) {
  15. new AddXml().changeXml();
  16. }
  17. public void changeXml(){
  18. Jdbc jdbc = new Jdbc();
  19. jdbc.addList();
  20. ArrayList<Student> stuLists = Jdbc.getStuList();
  21.  
  22. Document docu = new Document();
  23. Element root = new Element("root");
  24. docu.addContent(root);
  25. for (int i = 0; i < stuLists.size(); i++) {
  26. // System.out.println(stuLists.get(i));
  27. Student s = stuLists.get(i);
  28.  
  29. Element info = new Element("info");
  30. Element student = new Element("student");
  31. Element id = new Element("id");
  32. Element name = new Element("name");
  33. Element sex = new Element("sex");
  34. Element age = new Element("age");
  35.  
  36. Element book = new Element("book");
  37. Element bid = new Element("bid");
  38. Element bname = new Element("bname");
  39. Element bprice = new Element("bprice");
  40. Element bautor = new Element("bautor");
  41. book.addContent(bid);
  42. book.addContent(bname);
  43. book.addContent(bprice);
  44. book.addContent(bautor);
  45.  
  46. student.addContent(id);
  47. student.addContent(name);
  48. student.addContent(sex);
  49. student.addContent(age);
  50. info.addContent(student);
  51. info.addContent(book);
  52.  
  53. root.addContent(info);
  54. int a = i+1;
  55. String No = "000"+a;
  56. student.setAttribute("No", No);
  57. id.setText(s.getId());
  58. name.setText(s.getName());
  59. sex.setText(s.getSex());
  60. age.setText(s.getAge());
  61.  
  62. String b="0"+a;
  63. bid.setText(b);
  64. bname.setText("java核心");
  65. bprice.setText("1334.0");
  66. bautor.setText("star");
  67.  
  68. }
  69. //格式化生成的xml文件,如果不进行格式化的话,生成的xml文件将会是很长的一行...
  70. Format format = Format.getCompactFormat();
  71. format.setEncoding("utf-8");
  72. format.setIndent(" ");
  73. XMLOutputter xo = new XMLOutputter(format);
  74. try {
  75. xo.output(docu, new FileOutputStream(new File("e:/io/stu.xml")));
  76. } catch (FileNotFoundException e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. } catch (IOException e) {
  80. // TODO Auto-generated catch block
  81. e.printStackTrace();
  82. }
  83. System.out.println("生成xml文件成功!!!");
  84. }
  85. }

结果如图所示:

下面是用java解析上面所写的xml文件

简写版

  1. package com.direct.demo;
  2.  
  3. import java.io.IOException;
  4. import java.util.List;
  5.  
  6. import org.jdom.Document;
  7. import org.jdom.Element;
  8. import org.jdom.JDOMException;
  9. import org.jdom.input.SAXBuilder;
  10.  
  11. public class Saxxml {
  12.  
  13. public static void main(String[] args) {
  14. //解析xml文档
  15. SAXBuilder builder = new SAXBuilder();
  16. Document docu = null;
  17. try {
  18. docu = builder.build("e:/io/student.xml");
  19. } catch (JDOMException e) {
  20. e.printStackTrace();
  21. } catch (IOException e) {
  22. e.printStackTrace();
  23. }
  24.  
  25. Element root = docu.getRootElement();//得到根目录
  26. List stulist = root.getChildren();
  27. System.out.println(stulist.size()+"-----------");
  28. System.out.println("------------------读取xml文档的信息---------------------");
  29. for (int i = 0; i < stulist.size(); i++) {
  30. Element e = (Element) stulist.get(i);
  31. String stuid;
  32. String stuname ;
  33. String stusex ;
  34. String stuage;
  35. /*String stuValues = e.getAttribute("No").getValue();//属性值
  36. String stuValues1 = e.getAttributeValue("No");
  37. if (stuValues.equals("102")) {
  38. //修改姓名
  39. System.out.println(stuValues);
  40. e.getChild("stuname").setText("砖石王老五");
  41. //删除元素
  42. root.removeContent(e);
  43. break;
  44. }*/
  45.  
  46. if (i==0) {
  47. stuid = e.getChildText("stuid");
  48. stuname = e.getChildText("stuname");
  49. stusex = e.getChildText("stusex");
  50. stuage = e.getChildText("stuage");
  51. }else {
  52. stuid = e.getChildText("stuid"+i);
  53. stuname = e.getChildText("stuname"+i);
  54. stusex = e.getChildText("stusex"+i);
  55. stuage = e.getChildText("stuage"+i);
  56. }
  57. System.out.println("属性:"+e.getAttributeValue("No"));
  58. System.out.println("学号:"+stuid);
  59. System.out.println("姓名:"+stuname);
  60. System.out.println("年龄:"+stuage);
  61. System.out.println("性别:"+stusex);
  62. System.out.println("--------------------");
  63. }
  64. }
  65. }

  

java 生成和解析xml的更多相关文章

  1. dom4j生成和解析xml文件

    dom4j生成和解析xml文件 要生成和解析如下格式的xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...

  2. DOM4J生成、解析XML实例

    import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ...

  3. JDOM生成、解析XML实例

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  4. Java用SAX解析XML

    要解析的XML文件:myClass.xml <?xml version="1.0" encoding="utf-8"?> <class> ...

  5. java Document生成和解析xml

    转自:https://blog.csdn.net/p812438109/article/details/81807440 Document场景:需要知道文档所有结构 需要把文档一些元素排序 文档中的信 ...

  6. java使用sax解析xml

    目的:解析xml文件,并存入mysql,并且要解析的字段能一一对应.这里解析的是微博的文件,想要利用里面的article和person_id字段. 思路: 为了能得到person_id和article ...

  7. android 67 生成和解析xml

    生成xml: package com.itheima.createxml; import java.io.File; import java.io.FileNotFoundException; imp ...

  8. Java生成、解析二维码

    今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...

  9. Java中Sax解析XML

    SAX基于事件的解析,解析器在一次读取XML文件中根据读取的数据产生相应的事件,由应用程序实现相应的事件处理逻辑,即它是一种“推”的解析方式:这种解析方法速度快.占用内存少,但是它需要应用程序自己处理 ...

随机推荐

  1. 通过cookie绕过验证码登录

    在我们做自动化的时候碰到一些比较难破解的验证码时是非常头疼的,一般来说最好的办法就是让开发屏蔽,这样最有益身心健康. 那么今天我介绍的这个方法也挺简单的,就是通过添加cookie的方式绕过验证码直接登 ...

  2. P4173 残缺的字符串

    题目链接 题意分析 啥 ? ? ? \(FFT\)做字符串匹配 可是就是这样 我们定义匹配函数 我们定义\(A\)是匹配串 \(B\)是被匹配串 我们当前到达\(B\)串的\(x\)位置 \[P(x) ...

  3. leetcode-747-Largest Number At Least Twice of Others(求vector的最大值和次大值)

    题目描述: In a given integer array nums, there is always exactly one largest element. Find whether the l ...

  4. PHP 数组与CSV文件互转

    项目说明 数组导出CSV,ZIP文件,CSV,ZIP文件还原数组(Array export file,file restore array)适用于导入导出会员,商品信息注意:读取中文文件名文件.数据时 ...

  5. watch深度监测

    假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type=&q ...

  6. Vue.js路由跳转带参数到模板组件。

    从SalesOrderQuery组件跳到SalesOrder组件,并且通过params属性携带数据. handleClick(row) { //alert(row.FSaleName);//获取该行F ...

  7. 【中间件】Struts2系列漏洞POC小结

    #Struts2-045 ''' CVE-2017-5638 影响范围:Struts 2.3.5 – Struts 2.3.31,Struts 2.5 – Struts 2.5.10 触发条件:基于J ...

  8. sklearn的train_test_split

    train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签. 格式: X_train,X_test, y_train, y_test ...

  9. iview 之 穿梭框 transfer

    概述 双栏穿梭选择框,常用于将多个项目从一边移动到另一边. 说明 Transfer 组件主要基于以下四个 API 来使用: :data:总体数据,数组,每项为一个对象,且必须含有 key 值,组件基于 ...

  10. Docker - 故障排查指南

    这阵子开始捣鼓 Docker,遇到过不少问题,下面记录下问题以及解决方案 一.Docker 报 Failed to start Docker Application Container Engine ...