import java.io.File;
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class XmlUtil {private static Logger logger = Logger.getLogger(XmlUtil.class);/*** 使用sax解析本地xml文件* @param fileName 文件名* @return 是否解析成功*/public static boolean parseXmlBySax(String fileName){//根据文件名称创建文件File file = new File(fileName);//创建文件输入流读取文件FileInputStream fis = null;SAXReader reader = null;Document document = null;if(!file.exists()){logger.info("xml文件不存在");return false;}try {fis = new FileInputStream(file);//根据解析文件的编码格式设置编码reader.setEncoding("gbk");reader = new SAXReader();//通过文件输入流获取documentdocument = reader.read(fis);//获取跟元素Element rootElement = document.getRootElement();//rootElement下包含的子元素List list = rootElement.elements();if(list != null && list.size()>0){for(Element element:list){//获取属性值(第一种方法)Attribute attribute = element.attribute("name");String value = attribute.getValue();//获取属性值(第二种方法)String newValue = element.attributeValue("name");//获取element下的第一个userId元素Element userElement = element.element("userId");//获取userElement的文本String text = userElement.getTextTrim();//进行所需要的业务逻辑处理}return true;}} catch (FileNotFoundException e) {logger.error("读取本地文件失败",e);}catch(DocumentException e1){logger.error("获取Document失败",e1);}return false;}}
附:微信公众号支付返回参数解析案例
public static JSONObject service(JSONObject params, ActionContext context) throws IOException, SQLException, NamingException{
HttpServletRequest req = (HttpServletRequest)context.get(ActionContext.REQUEST);
HttpServletResponse resp = (HttpServletResponse)context.get(ActionContext.RESPONSE);
resp.setContentType("text/xml;charset=utf-8");
resp.setCharacterEncoding("utf-8");
String out_trade_no = "";//商户订单号
String transaction_id="";//微信支付订单号
String result_code = "";
Element root=null;
try {
InputStream inputStream = req.getInputStream();
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
System.out.println(document.asXML());
root = document.getRootElement(); //获取跟元素
//rootElement下包含的子元素
result_code=root.element("result_code").getText();
out_trade_no=root.element("out_trade_no").getText();
transaction_id=root.element("transaction_id").getText();
} catch (DocumentException e) {
e.printStackTrace();
}
}