首先:需要把dom4j-*.jar 加载到class path 下..
需要导入dom4j 下的类
需要解析的xml 文件格式如下:
dom4j 解析xml 文件的java 代码
/** 解析响应内容 */
@SuppressWarnings("unchecked")
public PosSign domXmlResponse(String xmlContent) {
PosSign pos = new PosSign();
try {
Document document = DocumentHelper.parseText(xmlContent);
document.setXMLEncoding("GBK");
Element elements = document.getRootElement();
for (Iterator i = elements.elementIterator(); i.hasNext();) {
Element element = (Element) i.next(); // dom 第一层元素
if (element.getName().equals("PUB")) {
for (Iterator j = element.elementIterator(); j.hasNext();) { // 遍历<PUB>下的节点
Element node = (Element) j.next(); // 获得<PUB>元素每一个节点
if ("TRXTIME".equals(node.getName())) { // 输出PUB
pos.setTrxTime(node.getText());
} else if ("TRXDATE".equals(node.getName())) {
pos.setTrxDate(node.getText());
}
}
} else if ("OUT".equals(element.getName())) {
for (Iterator j = element.elementIterator(); j.hasNext();) { // 遍历<OUT>下的节点
Element nodeOut = (Element) j.next();// dom 第二层元素 OUT的子元素 获得<OUT>元素每一个节点
if ("TRXCODE".equals(nodeOut.getName())) { // 输出OUT
pos.setTrxCode(nodeOut.getText());
} else if ("RETCODE".equals(nodeOut.getName())) {
pos.setRetCode(nodeOut.getText());
} else if ("RETMSG".equals(nodeOut.getName())) {
pos.setRetMsg(nodeOut.getText());
} else if ("POSID".equals(nodeOut.getName())) {
pos.setPosId(nodeOut.getText());
} else if ("MERID".equals(nodeOut.getName())) {
pos.setMerId(nodeOut.getText());
} else if ("PINKEY".equals(nodeOut.getName())) {
pos.setPin_KEY(nodeOut.getText());
} else if ("TKEY".equals(nodeOut.getName())) {
pos.setT_KEY(nodeOut.getText());
}
}
}
}
} catch (Exception e) {
System.out.println(e);
}
return pos;
}
注:当使用dom4j 时,使用 DocumentHelper.parseText(xmlContent); 时如果xmlContent有空格会报异常。Content is not allowed in trailing section
是什么意思呢。就是dom4j解析的内容有宁空格出现,需要把空格去掉。 DocumentHelper.parseText(xmlContent.trim());
解析结果:
创建一个xml 文件代码如下:
public static void createXml(String fileName) {
Document document = DocumentHelper.createDocument();
Element employees=document.addElement("employees");
Element employee=employees.addElement("employee");
Element name= employee.addElement("name");
name.setText("ddvip");
Element sex=employee.addElement("sex");
sex.setText("m");
Element age=employee.addElement("age");
age.setText("29");
try {
Writer fileWriter=new FileWriter(fileName);
XMLWriter xmlWriter=new XMLWriter(fileWriter);
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
生成的xml 文件如下:
在做dom4j 解析时,也可以解析文本内容 。
Document document = DocumentHelper.parseText(xmlContent);
document.setXMLEncoding("GBK");
fileName 是文件的全限定名
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(fileName));
注:PosSign 是一个javaBean 属性是xml 中的每一个元素 ..
这个查看XML 的工具叫 foxechs 下载地址:http://download.youkuaiyun.com/download/BOBO56SH/2026527