比较Dom,Dom4j,SAX解析xml文件//TODO
3.SAX方法
解析类
// 创建解析器工厂、获取解析器
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
// 创建xml读取器,绑定事件处理器
XMLReader reader = parser.getXMLReader();
SaxPojoHandler sph= new SaxPojoHandler();
reader.setContentHandler(stuHandler);
InputStream is = new FileInputStream(new File(ABC_Case.class.getResource("TransPojoNext.xml").toURI()));
reader.parse(new InputSource(is));
sph= stuHandler.getResultList();
SAX处理类
class SaxPojoHandler extends DefaultHandler {
private Map<String,TransactionReqBody> trbMap = null;
private String order = "";
private TransactionReqBody trb = null;
private String currentTag = null;
public Map<String,TransactionReqBody> getResultList() {
return trbMap;
}
@Override
public void startDocument() throws SAXException {
super.startDocument();
trbMap = new HashMap<String,TransactionReqBody>();
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, name, attributes);
if (name.equals("tran")) {
trb = new TransactionReqBody();
order = attributes.getValue("order");
}
currentTag = name;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
String value = "";
if (currentTag != null && trb != null) {
value = new String(ch, start, length);
if (value != null && !value.trim().equals("")&& !value.trim().equals("\n")) {
if ("Enon".equals(currentTag)) {
trb.setfInterId(value); // enon 标记
} else if ("type".equals(currentTag)) {
trb.setfSeqNo(value); // 接口类型
}
}
}
}
@Override
public void endElement(String uri, String localName, String name)throws SAXException {
super.endElement(uri, localName, name);
if (name.equals("tran")) {
trbMap.put(order,trb);
trb = null;
currentTag = null;
}
}
}