一直说要整理项目常犯的错误,可以一直拖拖拉拉,最近终于抽出时间来了,
项目中用到XML形式的报文格式进行接口传输,就会遇到取出相应节点进行逻辑判断的方法,
取出过程中遇到如下问题取不到相应节点的值:
方法如下:
// document = DocumentHelper.parseText(outXml);
// Node resultCode = document.selectSingleNode("ResultCode");
上面这种会出现取不到值的情况,分析发现可能是因为节点层次原因,改用如下发现即可
Element Id = null;
Element No = null;
Boolean flag = false;
if (StringUtils.isNotBlank(outXml)) {
/**
* 通过DOM解析特定节点的属性值
*/
Document document = null;
try {
document = DocumentHelper.parseText(outXml);
Element elementTemplate = document.getRootElement();
Element resultCode = (Element) elementTemplate.selectSingleNode("//ResultCode");
if (null != resultCode && "1".equals(resultCode.getText())) {
Id = (Element) elementTemplate.selectSingleNode("//Id");
No = (Element)elementTemplate.selectSingleNode("//No");
}
} catch (DocumentException e) {
Log.exMsglog("-DocumentHelper把XML转换成Document树异常exception:", e);
throw new CommonsException(MessageCode.INTERFACE_ID_WRONG, "---解析XML报错,XML=" + outXml);
}
}
引入包如下:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;