首页 > 代码库 > Dom4J解析XML文件
Dom4J解析XML文件
首先导入jar包:dom4j-1.6.1.jar
一、DOM4j中,获得Document对象的方式有三种:
1.读取XML文件,获得document对象 SAXReader parser = new SAXReader(); //获取解析对象 Document doc = parser.read(new File("people.xml")); 2.解析XML形式的文本,得到document对象. String text = "<blog></blog>"; Document document = DocumentHelper.parseText(text); 3.主动创建document对象. Document doc = DocumentHelper.createDocument(); //获取document对象 Element root = doc.addElement("peoples"); //为Document设置根元素
二、节点对象操作的方法
// 1.获取文档的根节点. Element root = document.getRootElement(); // 2.取得某个节点的子节点. Element element=node.element(“四大名著"); // 3.取得节点的文字 String text=node.getText(); // 4.取得某节点下所有名为“csdn”的子节点,并进行遍历. List nodes = rootElm.elements("csdn"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); // do something } // 5.对某节点下的所有子节点进行遍历. for(Iterator it=root.elementIterator();it.hasNext();){ Element element = (Element) it.next(); // do something } // 6.在某节点下添加子节点 Element elm = newElm.addElement("朝代"); // 7.设置节点文字. elm.setText("明朝"); // 8.删除某节点.//childElement是待删除的节点,parentElement是其父节点 parentElement.remove(childElment); // 9.添加一个CDATA节点.Element contentElm = infoElm.addElement("content");contentElm.addCDATA(“cdata区域”);
三、节点对象的属性方法操作
// 1.取得某节点下的某属性 Element root=document.getRootElement(); //属性名name Attribute attribute=root.attribute("id"); //2.取得属性的文字 String text=attribute.getText(); //3.删除某属性 Attribute attribute=root.attribute("size"); root.remove(attribute); //4.遍历某节点的所有属性 Element root=document.getRootElement(); for(Iterator it=root.attributeIterator();it.hasNext();){ Attribute attribute = (Attribute) it.next(); String text=attribute.getText(); System.out.println(text); } //5.设置某节点的属性和文字. newMemberElm.addAttribute("name", "sitinspring"); //6.设置属性的文字 Attribute attribute=root.attribute("name"); attribute.setText("csdn");
四、将文档写入XML文件
public static void createXML(){ Document doc = DocumentHelper.createDocument(); //获取document对象 doc.addComment("认得信息xml文件"); //设置注释信息 Element root = doc.addElement("peoples"); //为Document设置根元素 //设置第一个儿子元素 Element per1 = root.addElement("person"); //为根元素设置儿子元素 per1.addAttribute("pid", "1"); //设置儿子元素的属性 //设置孙子元素 Element pnameEle = per1.addElement("pname"); //为儿子元素设置孙子元素 pnameEle.setText("张三"); //设置孙子元素的内容 Element psexEle = per1.addElement("psex"); psexEle.setText("男"); Element page = per1.addElement("page"); page.setText("20"); Element phone = per1.addElement("phone"); phone.setText("1111111111"); //设置第二个儿子元素 Element per2 = root.addElement("person"); per2.addAttribute("pid", "2"); //设置孙子元素 Element pnameEle2 = per2.addElement("pname"); pnameEle2.setText("王五"); Element psexEle2 = per2.addElement("psex"); psexEle2.setText("男"); Element page2 = per2.addElement("page"); page2.setText("20"); Element phone2 = per2.addElement("phone"); phone2.setText("11122233389"); //设置第三个儿子元素 Element per3 = per2.createCopy(); //通过第二个儿子复制设置第三个儿子 per3.attribute("pid").setValue("3"); //修改第三个儿子的属性 per3.element("pname").setText("李四"); //修改第三个儿子的孙子元素 root.add(per3); //将第三个儿子添加到根元素中 OutputFormat format = new OutputFormat(); //定义把document进行输入的格式 format.setEncoding("UTF-8"); //输入的编码格式 format.setIndent(true); //输入是否缩进 format.setIndent(" "); //输入缩进的间距 format.setNewlines(true); //换行输入 OutputStream os; try { os = new FileOutputStream("people.xml"); //获取输出流 try { XMLWriter writer = new XMLWriter(os, format); //设置输出流的格式 try { writer.write(doc); //输出doc内容 writer.close(); //关闭资源 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }
五、字符串与XML的转换
// 1.将字符串转化为XML String text = "<csdn> <java>Java班</java></csdn>"; Document document = DocumentHelper.parseText(text); // 2.将文档或节点的XML转化为字符串. SAXReader reader = new SAXReader(); Document document = reader.read(new File("csdn.xml")); Element root=document.getRootElement(); String docXmlText=document.asXML(); String rootXmlText=root.asXML(); Element memberElm=root.element("csdn"); String memberXmlText=memberElm.asXML();
六、解析XML
<?xml version="1.0" encoding="UTF-8"?> <!--认得信息xml文件--> <peoples> <person pid="1"> <pname>张三</pname> <psex>男</psex> <page>20</page> <phone>1111111111</phone> </person> <person pid="2"> <pname>王五</pname> <psex>男</psex> <page>20</page> <phone>11122233389</phone> </person> <person pid="3"> <pname>李四</pname> <psex>男</psex> <page>20</page> <phone>11122233389</phone> </person> </peoples>
/* * 解析xml文件 */ public static void parseXML(){ SAXReader parser = new SAXReader(); //获取解析对象 Document doc; try { doc = parser.read(new File("people.xml")); //获取document对象 Element root = doc.getRootElement(); //获取根元素对象 String rootName = root.getName(); //获取根元素对象名称 System.out.println(rootName); //输出根元素名称 //获取个输出儿子元素 Iterator<Element> list = root.elementIterator(); //获取根元素的儿子对象 //遍历根元素下的儿子对象 while(list.hasNext()){ Element son = list.next(); String eName = son.getName(); //获取儿子对象的名称 System.out.println(eName); List<Attribute> attr = son.attributes(); //获取儿子对象的属性 //遍历儿子对象的属性 for(Attribute att:attr){ String attName = att.getName(); //获取儿子对象属性的名称 String attValue = http://www.mamicode.com/att.getValue(); //获取儿子对象属性的值 System.out.println(attName+"++++++++"+attValue); } //获取个输出孙子对象 List<Element> grandson = son.elements(); //获取孙子对象 //遍历孙子对象 for(Element child:grandson){ String childName = child.getName(); //获取孙子对象名称 String childText = child.getText(); //获取孙子元素的内容 System.out.println(childName+"++++++++"+childText); } } } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。