java解析和生成xml文件的补充

来源:互联网 发布:网络交友论坛 编辑:程序博客网 时间:2024/06/05 17:05

一、准备xml文件

<?xml version="1.0" encoding="GBK"?>
<activitys>
<activity>
<hdbh>20151226</hdbh>                                      <!--活动编号-->        
<hdmc>赠品</hdmc>                                              <!--活动名称-->
<yhje>2.00</yhje>                                                   <!--优惠金额-->
<validOrNot>有效</validOrNot>                           <!--活动是否有效-->
</activity>
<activity>
<hdbh>201512456443</hdbh>
<hdmc>立减3元</hdmc>   
<yhje>0.00</yhje>                     
<validOrNot>无效</validOrNot>
</activity>
</activitys>

二、对应的实体:ActivityInfo.java

private String hdbh;

private String hdmc;

private String yhje;

private Strign vaildOrNot;


三、使用DOM解析读取文件夹里同类文件的内容

public static List<ActivityInfo>  readMp3XmlDir(String xmlDir)throws Exception{
//文件夹
File dir = new File(xmlDir);
File[] filelist = dir.listFiles();
List<ActivityInfo> activityInfoList=null;
ActivityInfo activityInfo=null;
try {
if (filelist != null) {
for (int i = 0; i < filelist.length; i++) {
File file = filelist[i];
if (file.length() == 0) {
continue;
}else{
String filename = file.getName();
System.out.println("文件名称:"+filename);
// 解析xml文件
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);
//解析节点是activity的元素
NodeList list = document.getElementsByTagName("activity");
activityInfoList=new ArrayList<ActivityInfo>();
for (int j = 0; j < list.getLength(); j++) {
Element element = (Element) list.item(j);
activityInfo=new ActivityInfo();
//获取活动编号
String hdbh= element.getElementsByTagName("hdbh").item(0).getFirstChild().getNodeValue();
activityInfo.setHdbh(hdbh);

//获取活动名称

String hdmc= element.getElementsByTagName("hdmc").item(0).getFirstChild().getNodeValue();
activityInfo.set
Hdmc(hdmc);

//获取优惠金额

String yhje= element.getElementsByTagName("yhje").item(0).getFirstChild().getNodeValue();
activityInfo.setYhje(yhje);

//获取是否有效

String validOrNot= element.getElementsByTagName("validOrNot").item(0).getFirstChild().getNodeValue();
activityInfo.setValidOrNot(validOrNot);

//放入集合中
activityInfoList.add(activityInfo);
}
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return activityInfoList;
}

四、生成指定的xml文件

public static void writeMp3Xml(List<ActivityInfo> list,String filepath)throws Exception{
String head="<?xml version=\"1.0\" encoding=\"GBK\" ?>";
FileWriter fw=null;
BufferedWriter bw=null;
try{
//写入文件
fw=new FileWriter(new File(filepath),true);
bw=new BufferedWriter(fw);
bw.write(head+"\r\n");
bw.write("<activitys>"+"\r\n");
//遍历数据写入
for(ActivityInfo act :list){
bw.write("<activity>"+"\r\n");
//写入活动编号
bw.write(new StringBuffer("<hdbh>").append(mp3.getHdbh()).append("</hdbh>").append("\r\n").toString());
//写入活动名称
bw.write(new StringBuffer("<hdmc>").append(mp3.getHdmc()).append("</hdmc>").append("\r\n").toString());
//写入优惠金额
bw.write(new StringBuffer("<yhje>").append(mp3.getYhje()).append("</yhje>").append("\r\n").toString());
//写入是否有效
bw.write(new StringBuffer("<validOrNot>").append(mp3.getValidOrNot()).append("</validOrNot>").append("\r\n").toString());

bw.write("</activity>"+"\r\n");
}
bw.write("</activitys>");
//关闭流
bw.close();
fw.close();
}catch(Exception e){
throw new RuntimeException(e);
}
}


1 0