分享

如何在java中使用jdom生成和解析xml文件

 瑶疏影 2018-12-06

在java中,可以使用org.jdom*这个包来完成生成.xml文件的任务,下面来通过一个我自己写的例子来简单介绍一下这个包里面一些类的基本使用:

复制代码
1 import java.io.FileOutputStream; 2 import java.io.IOException;
//导入org.jdom的一些类
3 import org.jdom2.Document; 4 import org.jdom2.Element; 5 import org.jdom2.JDOMException; 6 import org.jdom2.output.Format; 7 import org.jdom2.output.XMLOutputter; 8 9 public class XMLGetter {10 11 public void BuildXMLDoc(int number, String ipAddress[], String testAddress[]) throws IOException, JDOMException {12 13 Element equipments = new Element('equipments');//建立根节点14 Document doc = new Document(equipments);//用把根节点创建一个Document15 16 Element equipmentsNum = new Element('equipments-number');//创建根节点下的子节点17 equipmentsNum.setText(Integer.toString(number));18 equipments.addContent(equipmentsNum);//把该子节点加入父节点19 //循环创建子节点,并加入到父节点中20 for (int i = 1; i <= number;="">) {21 Element equipment = new Element('equipment'); 22 equipment.setAttribute('id', '' + i);//添加节点属性并赋值 23 24 Element loginInfo = new Element('login-info');25 loginInfo.addContent(new Element('address').setText(ipAddress[i-1])); //创建节点,给节点赋值,然后加入到他的父节点26 loginInfo.addContent(new Element('telnet-password').setText('CISCO')); 27 loginInfo.addContent(new Element('enable-password').setText('CISCO'));28 equipment.addContent(loginInfo); 29 30 Element testCommands = new Element('test-commands');31 testCommands.addContent(new Element('command').setText('show ip route'));32 equipment.addContent(testCommands); 33 34 Element testReturn = new Element('test-returns');35 testReturn.addContent(new Element('return').setText(testAddress[i-1]));36 equipment.addContent(testReturn); 37 38 equipments.addContent(equipment);39 }40 41 XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());//new一个XMLOutputter,采用PrettyFormat格式(生成的XML可以自动换行)42 xmlOut.output(doc, new FileOutputStream('autoTest.xml'));//将生成的XML文件输出到文件43 }44 45 public static void main(String args[]){46 try { 47 XMLGetter xmlGetter = new XMLGetter(); 48 String[] ipAddress = {'172.16.0.1','172.16.0.2'};49 String[] testAddress = {'192.168.1.0/24','192.168.2.0/24'};50 System.out.println('生成 mxl 文件...');51 xmlGetter.BuildXMLDoc(2, ipAddress, testAddress); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } 55 }56 }
复制代码

运行结果:

复制代码
1 <>xml version='1.0' encoding='UTF-8'?> 2 equipments> 3 equipments-number>2equipments-number> 4 equipment id='1'> 5 login-info> 6 address>172.16.0.1address> 7 telnet-password>CISCOtelnet-password> 8 enable-password>CISCOenable-password> 9 login-info>10 test-commands>11 command>show ip routecommand>12 test-commands>13 test-returns>14 return>192.168.1.0/24return>15 test-returns>16 equipment>17 equipment id='2'>18 login-info>19 address>172.16.0.2address>20 telnet-password>CISCOtelnet-password>21 enable-password>CISCOenable-password>22 login-info>23 test-commands>24 command>show ip routecommand>25 test-commands>26 test-returns>27 return>192.168.2.0/24return>28 test-returns>29 equipment>30 equipments>
复制代码

下面介绍一下如何利用org.jdom*这个包来解析xml文件,也是通过一个例子来演示如何把上面得到的xml文件解析成信息形式:

复制代码
1 import java.io.FileOutputStream; 2 import java.io.IOException; 3 import java.util.Iterator; 4 import java.util.List; 5 //下面是引用到JDOM中的类 6 import org.jdom2.Document; 7 import org.jdom2.Element; 8 import org.jdom2.JDOMException; 9 import org.jdom2.input.SAXBuilder; 10 import org.jdom2.output.XMLOutputter;11 12 public class XMLParse {13 14 public void parseXML(String xmlPath){15 SAXBuilder builder = new SAXBuilder();//选用jdom中的SAXBuilder解析器解析xml16 try{17 Document doc = builder.build(xmlPath);//从传入xml文件中提取出doc18 Element equipments = doc.getRootElement();//从doc中得到根节点,赋值给equipments19 List equipmentList = equipments.getChildren('equipment');//在equipments中得到名字为equipment的子节点List20 for(Iterator iter = equipmentList.iterator(); iter.hasNext();){//循环List21 Element equipment = (Element)iter.next();22 String id = equipment.getAttributeValue('id');//得到equipment的属性id,并把它的值赋值给字符串23 String ipAddress = equipment.getChild('login-info').getChild('address').getText();//两重子节点的Text赋值给字符串24 String testAddress = equipment.getChild('test-returns').getChild('return').getText();25 System.out.println(id + ' ' + ipAddress + ' ' + testAddress);26 }27 28 XMLOutputter outputter=new XMLOutputter(); //保存Document的修改到XML文件中 29 outputter.output(doc,new FileOutputStream(xmlPath)); 30 31 }catch (JDOMException e) { 32 e.printStackTrace(); 33 }catch (IOException e) { 34 e.printStackTrace(); 35 }36 }37 38 public static void main(String args[]){39 XMLParse xmlParse = new XMLParse();40 xmlParse.parseXML('autoTest.xml');41 }42 }
复制代码

 控制台输出的结果:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约