Java利用JDom解析和传递XML格式数据

Java利用JDom来解析处理XML数据格式: 需要的包jdom-1.1.2.jar
1 将数据转换成XML格式的数据进行传递
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Element rootList, firstList, secondItem, thirdItem;
//根元素标签名
rootList =  new  Element( "root" );
//根元素标签内的属性名与值
rootList.setAttribute( "project" , pname);
//生成Doc文档
Document Doc =  new  Document(rootList);
//获取文档中的根标签
rootList = Doc.getRootElement();
for  ( int  i =  0 ; i < judges.size(); i++)
{
//生成新的元素
firstList =  new  Element( "flayout" );
firstList.setAttribute( "percent" "percent" );
//加入根级元素中
rootList.addContent(firstList);
}
XMLOutputter XMLOut =  new  XMLOutputter();
//将doc文档转换为字符串型的XML格式
String xmlinfo = XMLOut.outputString(Doc);
//将开头的去掉
xmlinfo = xmlinfo.replace( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ,
"" );
//返回已经封装好的XML数据
return  xmlinfo;


2 将字符串中的XML解析出进行处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//创建一个新的字符串
StringReader read =  new  StringReader(stadXML);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source =  new  InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb =  new  SAXBuilder();
String projectName;
List<Judgestandard> standIndex =  new  ArrayList<Judgestandard>();
try  {
// 通过输入源构造一个Document
Document doc = sb.build(source);
// 取的根元素
     Element root = doc.getRootElement();
     projectName = root.getAttributeValue( "project" );
// 得到根元素所有子元素的集合
     Element et =  null ;
     List nodes = root.getChildren();
// 第一级指标
for  ( int  i =  0 ; i < nodes.size(); i++) {
        et = (Element) nodes.get(i); // 循环依次得到子元素
        Judgestandard judge =  new  Judgestandard();
//获取该元素中属性的值
        String fid = et.getAttributeValue( "mainid" );
     //获取元素的孩子数目
List fsize = et.getChildren();
// 第二级指标
for  ( int  j =  0 ; j < fsize.size(); j++)
{
            et = (Element) fsize.get(j); // 循环依次得到子元素
            et.getAttributeValue( "stdid" )
        }

Java处理XML文档

原始XML:

1
2
3
4
5
6
7
8
9
10
11
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< HD >
     < disk  name = "C" >
          < capacity >8G</ capacity >
           < files >1580</ files >
     </ disk >
    < disk  name = "D" >
                < capacity >10G</ capacity >
                < files >3000</ files >
     </ disk >
</ HD >

Java处理代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import  java.util.List;
import  org.jdom.Document;
import  org.jdom.Element;
import  org.jdom.input.SAXBuilder;
/**
  * <?xml version="1.0" encoding="UTF-8"?>
  *<HD>
  *   <disk name="C">
  *     <capacity>8G</capacity>
  *       <files>1580</files>
  *   </disk>
  *   <disk name="D">
  *       <capacity>10G</capacity>
  *       <files>3000</files>
  *    </disk>
  *</HD>
  * @author Administrator
  *
  */
//利用JDom来解析XML文件
public  class  JDomParseXMLFile {
     public  static  void  main(String[] args)  throws  Exception{
           
           SAXBuilder sb= new  SAXBuilder();
           //下面两种构建document的方式,将xml和该解析类都放在默认包下
           Document doc=sb.build(JDomParseXMLFile. class .getClassLoader().getResourceAsStream( "test.xml" ));
           //Document doc=sb.build("src/test.xml");//构造文档对象
           Document doc=sb.build( "src/test.xml" ); //构造文档对象
           Element root=doc.getRootElement(); //获取根元素,即文档中的<HD>
           List list=root.getChildren( "disk" ); //取名字为disk的所有元素
           for ( int  i= 0 ;i<list.size();i++)
           {
               Element element=(Element)list.get(i); //依此遍历所有的disk节点
               String name=element.getAttributeValue( "name" );
               String capacity=element.getChildText( "capacity" ); //取disk子元素capacity的内容
               String files=element.getChildText( "files" );
               System.out.println( "name:" +name);
               System.out.println( "capacity" +capacity);
               System.out.println( "files" +files);
           }
     }
}