1、xml格式如下,多个<bill>标签
<?xml version="1.0" encoding="GBK"?>
<sell>
<bill ss="1">
<sn>2010E01234</sn>
<bt>A123456789,B123456789</bt>
<oc>abc123</oc>
<on>方鑫利群专卖</on>
<pc>20001</pc> <!-- //买方编号 -->
<pn>测试用户</pn> <!-- //买方名称 -->
<pd>1234567890ABCDE</pd> <!-- //买方卡号 -->
<ts>7</ts> <!-- //总数量 -->
<tz>5.000</tz> <!-- //总重量 -->
<ta>75.00</ta> <!-- //总金额 -->
<sd>2010-08-20 12:10:10</sd> <!-- 销售时间 -->
<item>
<cn>白条一级</cn> <!-- //品名 -->
<ct>3</ct> <!-- 数量 -->
<tw>2.000</tw> <!-- 重量 -->
<tp>15.50</tp> <!-- 单价 -->
<tt>30.00</tt> <!-- 金额 -->
<bn>222,333</bn> <!-- 酮体编号 -->
</item>
<item>
<cn>白条特级</cn> <!-- //品名 -->
<ct>5</ct> <!-- 数量 -->
<tw>3.000</tw> <!-- 重量 -->
<tp>15.50</tp> <!-- 单价 -->
<tt>45.00</tt> <!-- 金额 -->
<bn>111,332</bn> <!-- 酮体编号 -->
</item>
...
</bill>
...
</sell>
2、采用 digester解析,这里介绍有两种方法
完整代码如下
package org.mcp.data.logic;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.digester.Digester;
import org.mcp.data.entity.Bill;
import org.mcp.data.entity.BillItem;
import org.mcp.util.DateConverterPlugin;
import org.mcp.util.DateHelper;
import org.mcp.util.EmptyStringUtil;
public class BillDigest {
private Bill bill;
private List<Bill> billList;
public Bill getBill() {
if(bill ==null)
bill = new Bill();
return bill;
}
private void initBill(){
if(bill==null){
bill = new Bill();
}
}
public List<Bill> getBillList(){
return billList;
}
private void initBillList(){
if(billList ==null){
billList = new ArrayList<Bill>();
}
}
public void addBillList(
String serialNo,
String incoming,
String termNo,
String saleId,
String saleName,
String buyId,
String buyName,
String buyCardNo,
String totalWeight,
String totalMoney,
String saleDate,
String status,
String userId,
String meatTypeID) {
initBillList();
bill = this.getBill();
bill.setSerialNo(EmptyStringUtil.stringToEmpty(serialNo));
bill.setIncoming(EmptyStringUtil.stringToEmpty(incoming));
bill.setTermNo(EmptyStringUtil.stringToEmpty(termNo));
bill.getSupplier().setOrgNo(EmptyStringUtil.stringToEmpty(saleId));
//bill.getSaleName().setOrgName(EmptyStringUtil.stringToEmpty(saleName));
bill.getBuyer().setOrgNo(EmptyStringUtil.stringToEmpty(buyId));
//bill.getBuyName().setOrgName(EmptyStringUtil.stringToEmpty(buyName));
bill.setBuyCardNo(EmptyStringUtil.stringToEmpty(buyCardNo));
bill.setMeatTypeID(EmptyStringUtil.integerToEmpty(meatTypeID));
bill.setTotalWeight(EmptyStringUtil.doubleToEmpty(totalWeight));
bill.setTotalMoney(EmptyStringUtil.doubleToEmpty(totalMoney));
bill.setSaleDate(DateHelper.parseDate(saleDate));
bill.setStatus(EmptyStringUtil.integerToEmpty(status));
bill.setUserId(EmptyStringUtil.integerToEmpty(userId));
//this.setBill(bill);
billList.add(bill);
bill=null;
}
public void addBillItem(
String variety,
String unit,
String weight,
String price,
String total){
initBill();
BillItem item = new BillItem();
item.setVariety(EmptyStringUtil.stringToEmpty(variety));
item.setUnit(EmptyStringUtil.stringToEmpty(unit));
item.setWeight(EmptyStringUtil.doubleToEmpty(weight));
item.setPrice(EmptyStringUtil.doubleToEmpty(price));
item.setTotal(EmptyStringUtil.doubleToEmpty(total));
item.setHeader(bill);
bill.getItems().add(item);
}
public static List<Bill> getBillList(File xmlFile) {
BufferedReader reader = null;
List<Bill> billList = null;
String s;
StringBuffer buffer = new StringBuffer();
try {
reader = new BufferedReader(new FileReader(xmlFile));
while((s = reader.readLine()) != null) {
buffer.append(s);
}
billList = getBillList(buffer.toString());
reader.close();
} catch (Exception e) {
e.printStackTrace();
billList = null;
}
return billList;
}
public static List<Bill> getBillList(InputStream is) {
if (is == null) {
return null;
}
BufferedReader reader = null;
List<Bill> billList = null;
String s;
StringBuffer buffer = new StringBuffer();
try {
reader = new BufferedReader(new InputStreamReader(is));
while ((s = reader.readLine()) != null) {
buffer.append(s);
}
billList = getBillList(buffer.toString());
reader.close();
} catch (Exception e) {
e.printStackTrace();
billList = null;
}
return billList;
}
public static List<Bill> getBillList(String xml) {
String parseXML = xml;
List<Bill> billList = null;
BillDigest helper;
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("document", "org.mcp.data.logic.BillDigest");
digester.addCallMethod("document/bill", "addBillList", 14);
digester.addCallParam("document/bill/a", 0);
digester.addCallParam("document/bill/b", 1);
digester.addCallParam("document/bill/c", 2);
digester.addCallParam("document/bill/d", 3);
digester.addCallParam("document/bill/e", 4);
digester.addCallParam("document/bill/f", 5);
digester.addCallParam("document/bill/g", 6);
digester.addCallParam("document/bill/h", 7);
digester.addCallParam("document/bill/i", 8);
digester.addCallParam("document/bill/j", 9);
digester.addCallParam("document/bill/k", 10);
digester.addCallParam("document/bill/l", 11);
digester.addCallParam("document/bill/m", 12);
digester.addCallParam("document/bill/n", 13);
digester.addCallMethod("document/bill/billItem", "addBillItem", 5);
digester.addCallParam("document/bill/billItem/ia", 0);
digester.addCallParam("document/bill/billItem/ib", 1);
digester.addCallParam("document/bill/billItem/ic", 2);
digester.addCallParam("document/bill/billItem/id", 3);
digester.addCallParam("document/bill/billItem/ie", 4);
try {
helper = (BillDigest)digester.parse(new StringReader(parseXML));
billList = helper.getBillList();
}catch (Exception e) {
e.printStackTrace();
billList = null;
}
return billList;
}
public void addBill(Bill bill) {
initBillList();
bill.setTriger(8);
billList.add(bill);
}
public static List<Bill> getBillListRZ(String xml) {
List<Bill> billList = null;
BillDigest helper;
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("sell", BillDigest.class );
digester.addObjectCreate("sell/bill", Bill.class );
digester.addSetProperties("sell/bill", "ss", "billType");
digester.addBeanPropertySetter("sell/bill/sn", "serialNo");
digester.addBeanPropertySetter("sell/bill/sd", "saleDate");
digester.addBeanPropertySetter("sell/bill/bt", "incoming");
digester.addBeanPropertySetter("sell/bill/oc", "supId");
digester.addBeanPropertySetter("sell/bill/on", "supName");
digester.addBeanPropertySetter("sell/bill/pc", "buyId");
digester.addBeanPropertySetter("sell/bill/pn", "buyName");
digester.addBeanPropertySetter("sell/bill/pd", "buyCardNo");
digester.addBeanPropertySetter("sell/bill/ts", "totalCount");
digester.addBeanPropertySetter("sell/bill/tz", "totalWeight");
digester.addBeanPropertySetter("sell/bill/ta", "totalMoney");
digester.addObjectCreate("sell/bill/item", BillItem.class );
digester.addBeanPropertySetter("sell/bill/item/cn", "variety");
digester.addBeanPropertySetter("sell/bill/item/tw", "weight");
digester.addBeanPropertySetter("sell/bill/item/tp", "price");
digester.addBeanPropertySetter("sell/bill/item/tt", "total");
digester.addBeanPropertySetter("sell/bill/item/bn", "code");
digester.addSetNext("sell/bill/item", "addItem");
digester.addSetNext("sell/bill", "addBill");
try {
helper = (BillDigest)digester.parse(new StringReader(xml));
billList = helper.getBillList();
}catch (Exception e) {
e.printStackTrace();
billList = null;
}
return billList;
}
}
(1)方法 getBillList(String xml) 为第一种方式
使用addCallMethod方法,映射XML所对应的节点与这个Call method的参数即可,这个call method将读取的一个标签内所有的值存入对象,然后再存入一个集合中.
(2)方法 getBillListRZ(String xml) 为第二种方式
使用addObjectCreate方法,创建对象映射XML文件的属性对java Bean. 读取完一个对象将对象加入到一个集合中,然后再读取XML文件的下一个标签
分享到:
相关推荐
digester解析xml的问题.pdf
博文链接:https://aga.iteye.com/blog/218587
Digester解析XML文件
不错的解析XML的类,主要利用org.apache.commons.digester.Digester;
Digester解析XML,也是找到的别人的。
使用Digester解析XML文档示例
Digester解析XML问题.pdf
java反射,Digester解析xml文档
这是一个JAVA工程,导入后可直接运行,主要演示如何用digester解析XML文件
使用Apache的Digester来解析XML文档,代码,有解析!
使用STRUTS的解析XML技术digester来解析多层嵌套的XML文件,简单易懂
org.apache.commons.digester解析XML.rar 完整的测试工程,里面有需要的四个包
Digester java解析xml jar包
digeter解析xml所必须的jar包,包括commons-logging-1.2.jar、commons-digester-2.1.jar、commons-beanutils-1.9.3.jar
Digester的XML规则文件配置: 在Digester中提供了一个包:org.apache.commons.digester.xmlrules。这个包中的类可以从一个XML文档中读取并返回一个指定的配置信息。XML文档配置文件必须使用DTD,这是xmlrules包的一...
digerster 工具类 使用所需jar包
Digester读取XML学习,Digester读取XML学习