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);
}
}
}
|
本文转自 zhao_xiao_long 51CTO博客,原文链接:http://blog.51cto.com/computerdragon/1121518