第三方提供的,开源的,JDOM升级版,强大的解析xml文件的插件。
它的核心是使用Document对象进行操作,其中使用迭代器模式遍历元素的子元素。
使用前,先下载并配置好jar包
一、生成xml文档
步骤:
1、通过DocumentHelper生成一个Document对象:createDocument()
2、通过Document对象添加并得到根元素:addElement(元素名)
3、给元素添加子元素:addElement(元素名)
4、给元素添加属性:addAttribute(属性名,属性值)
5、给元素添加内容:addText(内容)
6、创建一个输出流。
(1)、使用Writer输出流,xml的元素会都在一行内,不易于查看。
(2)、使用XMLWriter可以指定输出格式,使用OutputFormat可以创建良好的输出格式:
XMLWriter writer = new XMLWriter(new FileWriter(new File(destPath)),OutputFormat.createPrettyPrint())
7、把Document生成的xml文件输出到指定位置:
(1)、普通输出流:doc.write(writer)
(2)、XMLWriter输出流:writer.write(doc)
8、关闭输出流
例子:在指定目录下生成一个xml文件。
static void writeXml(String destPath) throws Exception { //1、通过DocumentHelper生成一个Document对象 Document doc = DocumentHelper.createDocument(); //2、通过Document对象添加并得到根元素 Element root = doc.addElement("persons"); //3、给元素添加子元素 Element person = root.addElement("person"); //4、给元素添加属性 person.addAttribute("id","001"); person.addElement("name").addText("二狗子"); person.addElement("age").addText("18"); Element person2 = root.addElement("person"); person2.addElement("name").addText("三娃子"); person2.addElement("age").addText("32"); // //5、准备输出流 // Writer writer = new FileWriter(new File(destPath)); // //6、把doc生成的xml文件输出到指定路径下 // doc.write(writer); // writer.close(); //5、创建一个良好的输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); //6、获取XMLWriter输出流,指定输出格式 XMLWriter writer = new XMLWriter(new FileWriter(new File(destPath)),format); //7、把doc生成的xml文件输出到指定路径下 writer.write(doc); //8、关闭io流 writer.close(); }
运行后会在指定目录下生成persons.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="001"> <name>二狗子</name> <age>18</age> </person> <person> <name>三娃子</name> <age>32</age> </person> </persons>
二、读取xml文件
步骤:
1、创建SAXReader对象,用于读取xml文件:SAXReader reader = new SAXReader()
2、读取xml文件,得到Document对象:Document doc = reader.read(new File(srcPath))
3、通过Document对象获取根元素:getRootElement()
4、通过父元素获取子元素:
(1)、获取迭代器:elementIterator(),迭代获取。
(2)、指定元素名:element(元素名)
5、通过元素获取它的属性:
(1)、获取迭代器:attributeIterator(),迭代获取。
(2)、指定索引(0开始)或名字:attribute(索引)、attribute(属性名)
例子:实现了读取指定路径下的xml文件,并且封装了一个打印某个元素下所有元素数据的方法。
static void readXml(String srcPath) throws Exception { //1、创建SAXReader对象,用于读取xml文件 SAXReader reader = new SAXReader(); //2、读取xml文件,得到Document对象 Document doc = reader.read(new File(srcPath)); //通过Document对象获取根元素 Element root = doc.getRootElement(); //通过父元素获取子元素:1、迭代器。2、指定元素名 Element person = root.element("person"); //通过元素获取它的属性:1、迭代器。2、指定索引(0开始)或名字。 Attribute id = person.attribute(0); person.attributeIterator(); System.out.println(id.getName()+"="+id.getText()); System.out.println("------------------------------"); //4、打印文档下的所有元素 outAllElement(root); } /** * 打印该元素下的数据 */ static void outAllElement(Element root){ //获取元素的子元素迭代器 Iterator<Element> it = root.elementIterator(); while (it.hasNext()){ Element temp = it.next(); //如果该元素有内容则打印内容 if(!temp.getText().trim().equals("")){ System.out.println(temp.getName()+"="+temp.getText()); }else { System.out.println(temp.getName()); } //递归条件:如果子元素下面还有元素 if(temp.elementIterator()!=null){ //递归体 outAllElement(temp); } } }
测试代码:
public static void main(String[] args) throws Exception { writeXml("persons.xml"); readXml("persons.xml"); }
运行结果:
标签:xml,Java,dom4j,doc,元素,person,new,Document From: https://www.cnblogs.com/lurenjia-bky/p/16970376.html