JAVA中解析XML和书写XML

一.解析XML

1.解析user.xml文档

​ 解析user.xml文档,使用DOM4J解析XML,将User.xml文档解析后的所有员工入对象中,将对象在存储到集合中。

1.创建自定义User类

​ 属性包括:id(序号),name(姓名),age(年龄),salay(薪资),gender(性别)

public class User {private int id;private String name;private int age;private double salay;private char gender;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalay() {return salay;}public void setSalay(double salay) {this.salay = salay;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public User() {super();// TODO Auto-generated constructor stub}public User(int id, String name, int age, double salay, char gender) {super();this.id = id;this.name = name;this.age = age;this.salay = salay;this.gender = gender;}public String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + ", salay=" + salay + ", gender=" + gender + "]";}}

2.创建一个XML文件,写入user信息

<?xml version="1.0" encoding="UTF-8"?>
<list><!--根元素--><user id="1"><name>刘永超</name><age>18</age><salay>50000</salay><gender>男</gender></user><user id="2"><name>张飞</name><age>19</age><salay>50000</salay><gender>男</gender></user><user id="3"><name>关羽</name><age>20</age><salay>50002</salay><gender>女</gender></user>
</list>

3.解析写好XML文件

1.创建SAXReader;

2.使用SAXReader读取xml文档并生成DOM(Document)对象;

3.通过DOM对象获取根元素;

4.通过根元素开始逐级获取子元素,达到遍历XML文档数据的目的;

public class ParseUserXml {public static void main(String[] args) {try {List<User> list=new ArrayList<User>();//1.创建SAXReaderSAXReader reader=new SAXReader();//SAXReader提供了read()方法来读取xml文档返回一个DOM(Document)实例File file=new File("src/day15/User.xml");//2.使用SAXReader读取xml文档并申成DOM(Document)对象Document doc=reader.read(file);//3.通过DOM对象获取根元素//3.1 DOM(Document)提供了获取根元素得分方法getRootElement()返回一个ElementElement root=doc.getRootElement();//3.2 获取根标签下的所有子标签Element提供了获取所有子标签的方法elements()返回list集合List<Element> es=root.elements();//System.out.println(es.size());//3.3 遍历集合 ,通过每一个子标签获取员工信息for(Element e:es){//获取<name>标签//Element nameEel=e.element("name");//再获取<name>标签中的文本//String name=nameEel.getText();//获取标签中的文本//获取员工名字String   name=e.elementText("name");          //System.out.println(name);//获取员工的年龄int age=Integer.parseInt(e.elementText("age"));//获取员工薪资double salay=Double.parseDouble(e.elementText("salay"));//获取员工性别char gender=e.elementText("gender").charAt(0);//System.out.println(name+","+age+","+salay+","+gender);//获取idAttribute att=e.attribute("id");//通过使用Attribute提供了一个获取id的方法getValue()返回字符串int id=Integer.parseInt(att.getValue());//解析完毕后将解析后的数据存入到User对象中User user=new User(id, name, age, salay, gender);//System.out.println(user);list.add(user);}System.out.println(list.size());System.out.println(list);} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

4.执行结果

3
[User [id=1, name=刘永超, age=18, salay=50000.0, gender=男], User [id=2, name=张飞, age=19, salay=50000.0, gender=男], User [id=3, name=关羽, age=20, salay=50002.0, gender=女]]

5.结果分析

通过解析User.xml这个文件,我们获取到了xml中所有标签中的信息,并将信息存入User对象中,然后成功的将user对象存放到list集合中,达到了我们的目的。

2.解析web.xml文档中的所有 mime-mapping

1.web.xml文件

2.解析web.xml文档

文件内类似于以下形式:

思路如下:

1.解析web.xml文档中的所有

2.在标签中获取子标签,

3.然后将标签中的内容添加到Map集合中的key

4. 标签中的内容添加到Map集合中的value

public class ParseWebXml {public static void main(String[] args) {try {Map<String, String> map=new HashMap<String, String>();//1.创建SAXReader对象SAXReader reader=new SAXReader();//2.获取DOM对象File file=new File("src/day15/web.xml");Document doc = reader.read(file);//3.获取根标签Element root=doc.getRootElement();//4.获取根标签下的指定子标签List<Element> elements=root.elements("mime-mapping");//遍历elements获取每一个子标签中的文本内容for(Element e:elements){String extension=e.elementText("extension");String mimetype=e.elementText("mime-type");map.put(extension,mimetype);}      System.out.println(elements.size());//System.out.println("map集合为:"+map);} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

3.执行结果

1010

备注:因为map中存放的元素过多,在这里并没有输出,只输出了map集合的大小。

二.书写XML

使用DOM生成一个XML文档

生成一个XMl文档的步骤:

1.创建Document对象,表示一个空白文档,在这里有个类是DocumentHelper,提供了一个静态方法createDocument()返回一个Document实例

2.向Document中添加标签。

3.根据标签逐级添加子标签达到XML文档应有的树状结构。

4.将该结构写出去,需要创建XMLWriter并生成XML文档。

1.执行代码

public class WriterXml {public static void main(String[] args) {try {List<User> list=new ArrayList<User>();list.add(new User(1,"晓玉",20,100000,'女'));list.add(new User(2,"pdd",21,100005,'女'));list.add(new User(3,"uzi",22,100008,'男'));System.out.println(list);//使用DocumentHelper提供了createDocument()返回一个Document实例Document doc=DocumentHelper.createDocument();//2.向Document中添加标签,Document提供了添加标签的方法addElement(String name)Element root=doc.addElement("list");//3.给<list>根标签添加子标签<user>(遍历list集合给根标签《list》添加子标签)for(User u:list){//给根标签添加<user>Element elementUser=root.addElement("user");//给<user>标签添加子标签Element elementName=elementUser.addElement("name");Element elementAge=elementUser.addElement("age");Element elementSalay=elementUser.addElement("salay");Element elementGender=elementUser.addElement("gender");//给子标签添加问本内容elementName.addText(u.getName());elementAge.addText(u.getAge()+"");elementSalay.addText(u.getSalay()+"");elementGender.addText(u.getGender()+"");//给<user>标签添加属性idelementUser.addAttribute("id",u.getId()+"");}//美化XML文档的格式OutputFormat opf=OutputFormat.createPrettyPrint();//输出流FileOutputStream fos=new FileOutputStream("src/day15/myUser.xml");//创建XMLWrite对象,提供了一个方法write将xml写出去XMLWriter xw=new XMLWriter(fos,opf);xw.write(doc);System.out.println("写入完毕");fos.close();xw.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

2.执行结果

<?xml version="1.0" encoding="UTF-8"?><list><user id="1"><name>晓玉</name><age>20</age><salay>100000.0</salay><gender>女</gender></user><user id="2"><name>pdd</name><age>21</age><salay>100005.0</salay><gender>女</gender></user><user id="3"><name>uzi</name><age>22</age><salay>100008.0</salay><gender>男</gender></user>
</list>

3.结果分析

​ 将new出来的user对象放入到list集合中,遍历list集合,同时向xml添加标签和文本信息,再将xml写出,此结果达到了我们将对象写入到xml文件的目的。

JAVA中解析XML和书写XML相关推荐

  1. 如何在Java中解析命令行参数?

    在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...

  2. java+解析未知json_在Java中解析JSON时如何忽略未知属性– Jackson @JsonIgnoreProperties注释示例...

    java+解析未知json 使用Jackson API在Java中解析JSON时的常见问题之一是,当您的JSON包含未知属性(即您的Java类没有对应于所有JSON属性的所有字段)时,该操作将失败. ...

  3. java解析xml文件失败,在Java中解析大型XML文件时找不到文件异常

    我使用SAX(Simple API for XML)来解析XML文档.该文档是一个巨大的XML文件(dblp.xml - 1.46 GB),我写了几行解析器并在小文件上测试它,它的工作原理. Samp ...

  4. 您如何在PHP中解析和处理HTML / XML?

    如何解析HTML / XML并从中提取信息? #1楼 QueryPath很好,但是要小心"跟踪状态",因为如果您没有意识到这意味着什么,那可能意味着您浪费了大量的调试时间来试图找出 ...

  5. 在java中表示json_在Java中解析JSON而不知道JSON格式

    我试图解析在Java中的JSON字符串,并找到键值对,使我可以确定JSON对象的近似结构,因为JSON字符串的对象结构是未知的. 例如,一个执行可能有一个JSON字符串,如下所示: {"id ...

  6. java中的sql语句书写_Java中sql语句之通配符*

    在java中执行SQL语句要特别注意通配符的问题,否则是不会成功的: 在ACCESS中的通配符是* 例:select  *  from student  where  name like  '张*' ...

  7. java中解析xml解读,java解析xml(JDOM)

    下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档. 为了简单,我用了如下XML作为要解析的XML文件: rjzjh 60.0 够简单的吧,但它对于我们关心 ...

  8. Java中解析XML文件之SAX方式

    1.SAX解析方式,是将XML文件逐行读进内存进行解析的. 2.首先编写一个SAXHandler(SAX处理类),这个类需要继承DefaultHandler类 3.在SAXHandler类中需要重写s ...

  9. Java 中解析 xml 格式字符串的数据

    解析 xml 格式中的字符串数据 相信有很多小伙伴经历过接口返回的数据是在一段 xml 字符串格式的数据里,那么我们可用什么最快最便捷的方法取到里面的数据勒? 下面这里是一个xml 格式的是实例 这里 ...

  10. java 反射解析xml_java反射获取xml元素

    类名: class Person { public void run(String who){ System.out.println("Person::run()" + who); ...

最新文章

  1. SQL Server日期计算
  2. java动态语言_java动态类型语言支持(三)
  3. configure: error: no termcap library found
  4. 【渝粤教育】国家开放大学2018年秋季 0505-22T护理学基础 参考试题
  5. 羽枭android,【答疑】Unreal Engine 4 是怎样发布android的? - 视频教程线上学
  6. LinuxMint下的Orionode源码安装
  7. jmeter简单使用
  8. 【Unity3D基础教程】给初学者看的Unity教程(一):GameObject,Compoent,Time,Input,Physics...
  9. CentOs上docker安装nginx、tomcat、redis
  10. 解决git clone出现“error: RPC failed; result= 18,HTTP code = 20018. 00 KiB/s”报错的五个网址(个人用)
  11. [转帖]DRAM芯片战争,跨越40年的生死搏杀
  12. 爱奇艺多模态短视频内容标签技术及应用
  13. Android studio使用SVN
  14. 无桥PFC的优势及解决方案
  15. 腾讯云重置系统后,xshell登录不上
  16. 打印机服务器未响应,打印机不能打印,点击打印后没反应
  17. 华硕服务器主板安装系统提示驱动,解决B150主板安装win7操作系统USB设备无法读取故障...
  18. SVN客户端安装和使用
  19. SQL 行转列 列转行 Oracle转置函数函数pivot、unpivot 解决wm_concat 没有排序
  20. 基于MATLAB的图像处理程序

热门文章

  1. python+pyecharts实现中国省份地图可视化
  2. 51单片机用三种方法实现流水灯(超详细)
  3. c语言scanf用法例子,scanf(scanf用法举例)
  4. 命令行进行ftp的登陆
  5. Lync Server 2010下载拓扑报错分析及解决方法分享
  6. Win10 利用快捷键,快速新建TXT文档
  7. 全国计算机二级ps考什么,计算机二级ps考试内容有哪些
  8. Arduino应用开发——LCD显示图片
  9. 下载带vba的wps
  10. linux4.12内核 bridge简介