您的位置:首页 > 其它

使用dom4j 解析xml

2011-05-23 11:05 316 查看
首先:需要把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.csdn.net/download/BOBO56SH/2026527
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: