BaseXMLData

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class BaseXMLData implements IData {
	String defaultPath = "data/";
	public static final String CASETYPE = "case";

	int rowSize;
	int dataSize;

	public Object[][] getData(String caseName, String dataFile) {
		return getData(caseName, dataFile, 0);
	}

	public Object[][] getData(String caseName, String dataFile, int rowNum) {
		Object[][] data = addList(caseName, dataFile, rowNum);
		return data;
	}

	private Object[][] addList(String caseName, String dataFile, int rowNum) {
		ArrayList<Object> list = new ArrayList<Object>();
		NodeList caseList = getNodeList(caseName, dataFile);
		String type;
		if (caseList != null) {
			for (int i = 0; i < caseList.getLength(); i++) {
				Node caseNode = caseList.item(i);
				if (caseNode.getNodeType() == Node.ELEMENT_NODE) {
					if (caseNode.getNodeName() == CASETYPE) {
						String cName = caseNode.getAttributes()
								.getNamedItem("name").getNodeValue();
						if (cName.equals(caseName)) {
							for (Node n = caseNode.getFirstChild(); n != null; n = n
									.getNextSibling()) {
								if (n.getNodeType() == Node.ELEMENT_NODE) {
									if (n.getNodeName().equals("row")) {
										rowSize++;
										dataSize = 0;
										for (Node m = n.getFirstChild(); m != null; m = m
												.getNextSibling()) {
											if (m.getNodeName().equals("data")) {
												dataSize++;
												Node typevalue = m
														.getAttributes()
														.getNamedItem("type");
												if (typevalue != null) {
													type = m.getAttributes()
															.getNamedItem(
																	"type")
															.getNodeValue();
													if (type.equalsIgnoreCase("String")) {
														String s = m
																.getAttributes()
																.getNamedItem(
																		"value")
																.getNodeValue();
														list.add(s);
													} else if (type
															.equalsIgnoreCase("array")) {
														String s = m
																.getAttributes()
																.getNamedItem(
																		"value")
																.getNodeValue();
														String[] ss = s
																.split(",");
														list.add(ss);
													}
												} else {
													String s = m
															.getAttributes()
															.getNamedItem(
																	"value")
															.getNodeValue();
													list.add(s);

												}
											}
										}
									}

								}
							}
						}

					}
				}
			}

		}
		Object[][] data = new Object[rowSize][dataSize];
		if (rowNum <= 0 || rowNum >= rowSize) {
			int k = -1;
			for (int i = 0; i < rowSize; i++) {
				for (int j = 0; j < dataSize; j++) {
					if (k < list.size())
						k++;
					data[i][j] = list.get(k);
				}
			}
		} else {
			int k = -1;
			data = new Object[rowNum][dataSize];
			for (int i = 0; i < rowNum; i++) {
				for (int j = 0; j < dataSize; j++) {
					if (k < list.size())
						k++;
					if (i <= (rowNum - 1)) {
						data[i][j] = list.get(k);
					}
				}
			}
		}
		return data;
	}

	private NodeList getNodeList(String caseName, String dataFile) {
		DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder dombuilder = domfac.newDocumentBuilder();
			InputStream is = new FileInputStream(defaultPath + dataFile);

			Document doc = dombuilder.parse(is);
			Element cases = doc.getDocumentElement();
			NodeList caseList = cases.getChildNodes();
			return caseList;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
}


<?xml version="1.0" encoding="utf-8"?>
<cases>
	<case name="caigoupifa">
		<row>
		<data key="secondClassic" type="String" value="食品" />
		<data key="secondClassicCode" type="String" value="8537" />
		</row>
	</case>
</cases>

public static Object[][] getData()
	{ 
		return new BaseXMLData().getData("caigoupifa","data.xml");		
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值