实际平常我们用到解析xml大部分都是拿文件去处理,直接用xml字符串的比较少的,实际好好的分析一下,两者之间的转换,就会发现,就是文件流和字节流之间的转换喽,接下来开始代码分析:
1.代码部分:
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
/**
* @content 用JDOM方式解析xml字符串
* @author syp
* @time 2019年10月26日16:19:14
*
*/
public class Jdom {
//这些都会xml标签属性,根据自己实际情况定义
public static String trxId; //交易流水号
public static String trxBank; //交易发起机构
public static String trxOper; //交易发起柜员编号
public static String trxDate; //交易发起时间
public static String PkgNo; //前置接收包号
public static String fileCode; //文件标识
public static String fileName; //文件名称
public static String fileContent; //文件路径
public static int PullConfigXml(String fileContent){
Log4jBean.logger.info("开始解析文件..."+fileContent);
//创建一个新的字符串
StringReader reader=new StringReader(fileContent);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML输入,此处为文件流
InputSource source = new InputSource(reader);
// 创建一个新的SAXBuilder
SAXBuilder saxbBuilder = new SAXBuilder();
try {
// 通过输入源构造一个Document
Document doc = saxbBuilder.build(source);
// 取得xml根元素
Element root = doc.getRootElement();
// 取得根元素的子元素
List<?> node = root.getChildren();
for (int i = 0; i < node.size(); i++) {
Element element = (Element) node.get(i);
if (element.getName().equals("trxId")) {
trxId = element.getValue();
} else if (element.getName().equals("trxBank")) {
trxBank = element.getValue();
} else if (element.getName().equals("trxOper")) {
trxOper = element.getValue();
} else if (element.getName().equals("trxDate")) {
trxDate = element.getValue();
} else if(element.getName().equals("PkgNo")){
PkgNo=element.getValue();
} else if(element.getName().equals("fileCode")){
fileCode=element.getValue();
} else if(element.getName().equals("fileName")){
fileName=element.getValue();
}else if(element.getName().equals("fileContent")){
fileContent=element.getValue();
}
}
//在这就可以拿到每个标签属性的值了,至于想怎么用就看自己实际情况了
System.out.println("=====打印xml标签属性的值==================");
System.out.println("=====trxId["+trxId+"]===================");
System.out.println("=====trxBank["+trxBank+"]===============");
System.out.println("=====trxOper["+trxOper+"]===============");
System.out.println("=====trxDate["+trxDate+"]===============");
System.out.println("=====PkgNo["+PkgNo+"]===================");
System.out.println("=====fileCode["+fileCode+"]=============");
System.out.println("=====fileName["+fileName+"]=============");
System.out.println("=====fileContent["+fileContent+"]=======");
} catch (Exception e) {
Log4jBean.logger.error("解析xml配置文件异常,异常信息为:【" + e.getMessage() + "】");
return -1;
}
return 0;
}
public static void main(String[] args) {
String str="<?xml version=\"1.0\" encoding=\"GBK\"?><root><trxId>1020012201571303539020247</trxId><trxBank>010550000</trxBank><trxOper>77329295</trxOper><trxDate>20191017171219056</trxDate><PkgNo></PkgNo><fileCode>Gzdfzh</fileCode><fileName>Gzdfzh0105201910170247</fileName><fileContent>4543543543|项目项目项目|43243$</fileContent></root>";
PullConfigXml(str);
}
}
注:需要导入的jar包:
2.效果图: