JAVA中解析XML和书写XML
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相关推荐
- 如何在Java中解析命令行参数?
在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...
- java+解析未知json_在Java中解析JSON时如何忽略未知属性– Jackson @JsonIgnoreProperties注释示例...
java+解析未知json 使用Jackson API在Java中解析JSON时的常见问题之一是,当您的JSON包含未知属性(即您的Java类没有对应于所有JSON属性的所有字段)时,该操作将失败. ...
- java解析xml文件失败,在Java中解析大型XML文件时找不到文件异常
我使用SAX(Simple API for XML)来解析XML文档.该文档是一个巨大的XML文件(dblp.xml - 1.46 GB),我写了几行解析器并在小文件上测试它,它的工作原理. Samp ...
- 您如何在PHP中解析和处理HTML / XML?
如何解析HTML / XML并从中提取信息? #1楼 QueryPath很好,但是要小心"跟踪状态",因为如果您没有意识到这意味着什么,那可能意味着您浪费了大量的调试时间来试图找出 ...
- 在java中表示json_在Java中解析JSON而不知道JSON格式
我试图解析在Java中的JSON字符串,并找到键值对,使我可以确定JSON对象的近似结构,因为JSON字符串的对象结构是未知的. 例如,一个执行可能有一个JSON字符串,如下所示: {"id ...
- java中的sql语句书写_Java中sql语句之通配符*
在java中执行SQL语句要特别注意通配符的问题,否则是不会成功的: 在ACCESS中的通配符是* 例:select * from student where name like '张*' ...
- java中解析xml解读,java解析xml(JDOM)
下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档. 为了简单,我用了如下XML作为要解析的XML文件: rjzjh 60.0 够简单的吧,但它对于我们关心 ...
- Java中解析XML文件之SAX方式
1.SAX解析方式,是将XML文件逐行读进内存进行解析的. 2.首先编写一个SAXHandler(SAX处理类),这个类需要继承DefaultHandler类 3.在SAXHandler类中需要重写s ...
- Java 中解析 xml 格式字符串的数据
解析 xml 格式中的字符串数据 相信有很多小伙伴经历过接口返回的数据是在一段 xml 字符串格式的数据里,那么我们可用什么最快最便捷的方法取到里面的数据勒? 下面这里是一个xml 格式的是实例 这里 ...
- java 反射解析xml_java反射获取xml元素
类名: class Person { public void run(String who){ System.out.println("Person::run()" + who); ...
最新文章
- SQL Server日期计算
- java动态语言_java动态类型语言支持(三)
- configure: error: no termcap library found
- 【渝粤教育】国家开放大学2018年秋季 0505-22T护理学基础 参考试题
- 羽枭android,【答疑】Unreal Engine 4 是怎样发布android的? - 视频教程线上学
- LinuxMint下的Orionode源码安装
- jmeter简单使用
- 【Unity3D基础教程】给初学者看的Unity教程(一):GameObject,Compoent,Time,Input,Physics...
- CentOs上docker安装nginx、tomcat、redis
- 解决git clone出现“error: RPC failed; result= 18,HTTP code = 20018. 00 KiB/s”报错的五个网址(个人用)
- [转帖]DRAM芯片战争,跨越40年的生死搏杀
- 爱奇艺多模态短视频内容标签技术及应用
- Android studio使用SVN
- 无桥PFC的优势及解决方案
- 腾讯云重置系统后,xshell登录不上
- 打印机服务器未响应,打印机不能打印,点击打印后没反应
- 华硕服务器主板安装系统提示驱动,解决B150主板安装win7操作系统USB设备无法读取故障...
- SVN客户端安装和使用
- SQL 行转列 列转行 Oracle转置函数函数pivot、unpivot 解决wm_concat 没有排序
- 基于MATLAB的图像处理程序