做了一段时间的项目,最近手头还有一些接口开发工作,关于接口开发很多涉及到XML解析和创建,下面谈一下我个人的一些见解。
首先,我们谈一下解析XML。刚到公司时我是不太会解析XML文档,个人起初基础比较薄弱,关于文件流部分学得不是很好,在后面的工作中发现这部分知识在工作中非常重要,目前解析XML的方法有很多,我就写一下我个人比较熟悉的解析方式,以下举例来说明
<?xml version="1.0"?>
<SearchCountryResponse>
<CountryDetails>
<CountryDetail>
<Country>1</Country>
<CountryName>中国</CountryName>
<CountryEName>China</CountryEName>
</CountryDetail>
<CountryDetail>
<Country>2</Country>
<CountryName>马来西亚</CountryName>
<CountryEName>Malaysia</CountryEName>
</CountryDetail>
<CountryDetail>
<Country>3</Country>
<CountryName>新加坡</CountryName>
<CountryEName>Singapore</CountryEName>
</CountryDetail>
<CountryDetail>
<Country>4</Country>
<CountryName>泰国</CountryName>
<CountryEName>Thailand</CountryEName>
</CountryDetail>
<CountryDetail>
<Country>5</Country>
<CountryName>阿尔巴尼亚</CountryName>
<CountryEName>Albania </CountryEName>
</CountryDetail>
</CountryDetails>
</SearchCountryResponse>
编写程序
public class readXML(){
public static void main(String[] args){
File file = new File("D:/test.xml");
//创建Document对象
Document doc = null;
SAXReader saxReader = new SAXReader();
try{
doc = saxReader.read(file);
//得到根节点根节点是SearchCountryResponse
Element root = doc.getRootElement();
Element countryDetails = root.element("CountryDetails");
//因为下级节点时同级的相同节点,因此直接循环遍历即可
Iterator it =countryDetails.elementIterator("CountryDetail");
//下面的是遍历,如果想保存解析出来的数据到数据库,那么写一个跟解析字段对应的javabean,将解析出来的数据set到对应字段里面,再用JDBC或者hibernate连接数据库存入
while(it.hasNext()){
Element countryDetail = (Element) it.next();
String countryId = countryDetail.elementTextTrim("Country");
String countryName = countryDetail.elementTextTrim("CountryName");
String countryEName = countryDetail.elementTextTrim("CountryEName");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
这种方式相对来说比较简单易懂