Java端XML解析

 有一些情况下我们在进行调用的时候对方接口给我们返回的XML文件并不是常见的XML文件,而是如下格式:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="YSONE" fieldtype="fixed" WIDTH="10" />
<FIELD attrname="YSTWO" fieldtype="string" WIDTH="20" />
<FIELD attrname="YSTHREE" fieldtype="string" SUBTYPE="FixedChar"
WIDTH="18" />
<FIELD attrname="YSFOUR" fieldtype="string" WIDTH="60" />
<FIELD attrname="YSFIVE" fieldtype="string" WIDTH="8" />
<FIELD attrname="YSSIX" fieldtype="string" WIDTH="14" />
</FIELDS>
<PARAMS />
</METADATA>
<ROWDATA>
<ROW YSONE="第一行元素1对应内容" YSTWO="第一行元素2对应内容" YSTHREE="第一行元素3对应内容" YSFOUR="第一行元素4对应内容"
YSFIVE="第一行元素5对应内容" YSSIX="第一行元素6对应内容" />
<ROW YSONE="第二行元素1对应内容" YSTWO="第二行元素2对应内容" YSTHREE="第二行元素3对应内容" YSFOUR="第二行元素4对应内容"
YSFIVE="第二行元素5对应内容" YSSIX="第二行元素6对应内容" />
</ROWDATA>
</DATAPACKET>

这种情况下需要使用如下方式进行解析,直接上代码:

引用dom4j.jar进行处理

import java.util.List;

import org.dom4j.*;

public class name {

/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args)
{
String xmlformat = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> " +
"<DATAPACKET Version=\"2.0\"> " +
"<METADATA> " +
" <FIELDS> " +
" <FIELD attrname=\"YSONE\" fieldtype=\"fixed\" WIDTH=\"10\" /> " +
" <FIELD attrname=\"YSTWO\" fieldtype=\"string\" WIDTH=\"20\" /> " +
" <FIELD attrname=\"YSTHREE\" fieldtype=\"string\" SUBTYPE=\"FixedChar\" WIDTH=\"18\" />" +
" <FIELD attrname=\"YSFOUR\" fieldtype=\"string\" WIDTH=\"60\" />" +
" <FIELD attrname=\"YSFIVE\" fieldtype=\"string\" WIDTH=\"8\" />" +
" <FIELD attrname=\"YSSIX\" fieldtype=\"string\" WIDTH=\"14\" />" +
" </FIELDS>" +
" <PARAMS />" +
"</METADATA>" +
"<ROWDATA>" +
" <ROW YSONE=\"第一行元素1对应内容\" YSTWO=\"第一行元素2对应内容\" YSTHREE=\"第一行元素3对应内容\" YSFOUR=\"第一行元素4对应内容\" YSFIVE=\"第一行元素5对应内容\" YSSIX=\"第一行元素6对应内容\" />" +
" <ROW YSONE=\"第二行元素1对应内容\" YSTWO=\"第二行元素2对应内容\" YSTHREE=\"第二行元素3对应内容\" YSFOUR=\"第二行元素4对应内容\" YSFIVE=\"第二行元素5对应内容\" YSSIX=\"第二行元素6对应内容\" />" +
"</ROWDATA>" +
"</DATAPACKET>";
Document doc = null;

try {
doc = DocumentHelper.parseText(xmlformat);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element rootElt = doc.getRootElement(); // 获取根节点
List<Element> listElement=rootElt.elements();
for(Element e:listElement)
{
if("ROWDATA".equals(e.getName()))
{
List<Element> x = e.elements();
int size = x.size();
for(int i = 0 ; i < size ; i ++)
{
Element a = x.get(i);
if("ROW".equals(a.getName()))
{
List<Attribute> listAttr2 = a.attributes();
{
for(Attribute attr2:listAttr2)
{
if(attr2.getName().equals("YSONE"))
{
System.out.println("第" + (i + 1) + "个YSONE:" + attr2.getValue());
}
if(attr2.getName().equals("YSTWO"))
{
System.out.println("第" + (i + 1) + "个YSTWO:" + attr2.getValue());
}
if(attr2.getName().equals("YSTHREE"))
{
System.out.println("第" + (i + 1) + "个YSTHREE:" + attr2.getValue());
}
if(attr2.getName().equals("YSFOUR"))
{
System.out.println("第" + (i + 1) + "个YSFOUR:" + attr2.getValue());
}
if(attr2.getName().equals("YSFIVE"))
{
System.out.println("第" + (i + 1) + "个YSFIVE:" + attr2.getValue());
}
if(attr2.getName().equals("YSSIX"))
{
System.out.println("第" + (i + 1) + "个YSSIX:" + attr2.getValue());
}
}
}
}
}
}
}

}
}

猜你喜欢

转载自www.cnblogs.com/Sabasdian/p/XMLDEAL.html