如何获取xml循环体报文内容

时间:2023-12-24 08:30:19
Xml报文格式如下所示:
<body>
<FILENAME></FILENAME>
<records>20</records>
<record>
<ODYWLZBZ>01</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>116000</ODCLZCZE>
<ODCHAFEE>0</ODCHAFEE>
<ODDFACCT>03331900040084502</ODDFACCT>
<ODJDACNA>上海xxxxxxx有限公司</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320099900N400000387</ODTRANNO>
<ODZHAIYA></ODZHAIYA>
</record>
<record>
<ODYWLZBZ>02</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>2000</ODCLZCZE>
<ODCHAFEE>4</ODCHAFEE>
<ODDFACCT>320006608018170046228</ODDFACCT>
<ODJDACNA>江苏**管理有限公司</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320103001K010000036</ODTRANNO>
<ODZHAIYA>保证金-雨花梅山</ODZHAIYA>
</record>
<record>
<ODYWLZBZ>01</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>5000</ODCLZCZE>
<ODCHAFEE>0</ODCHAFEE>
<ODDFACCT>0133102800000019</ODDFACCT>
<ODJDACNA>支付宝</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320099900N330001644</ODTRANNO>
<ODZHAIYA></ODZHAIYA>
</record>
<record>
<ODYWLZBZ>02</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>4956</ODCLZCZE>
<ODCHAFEE>0</ODCHAFEE>
<ODDFACCT>622452011100064</ODDFACCT>
<ODJDACNA>蒋**</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320103001K010000028</ODTRANNO>
<ODZHAIYA>转款</ODZHAIYA>
</record>
<record>
<ODYWLZBZ>02</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>11400</ODCLZCZE>
<ODCHAFEE>8</ODCHAFEE>
<ODDFACCT>6228480399624888679</ODDFACCT>
<ODJDACNA>车**</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320103001K010000041</ODTRANNO>
<ODZHAIYA>转款</ODZHAIYA>
</record>
<record>
<ODYWLZBZ>02</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>100000</ODCLZCZE>
<ODCHAFEE>8</ODCHAFEE>
<ODDFACCT>7321010182600073879</ODDFACCT>
<ODJDACNA>南京**工程研究院</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320103001K010000034</ODTRANNO>
<ODZHAIYA>转款</ODZHAIYA>
</record>
<record>
<ODYWLZBZ>02</ODYWLZBZ>
<ODCAACNO>6224520111002185938</ODCAACNO>
<ODCLNAME>未来数据银行</ODCLNAME>
<ODJIGODM>320188990</ODJIGODM>
<ODCLZCZE>252</ODCLZCZE>
<ODCHAFEE>0</ODCHAFEE>
<ODDFACCT>6230660131001657577</ODDFACCT>
<ODJDACNA>杰</ODJDACNA>
<ODTRDATE>20170716</ODTRDATE>
<ODTRANNO>320103001K010000040</ODTRANNO>
<ODZHAIYA>转款</ODZHAIYA>
</record>
<record> <ODYWLZBZ>02</ODYWLZBZ>……………………………………
/**
函数说明:
获取循环节点值,并保存在二维数组;说明:保存在二维数组为了方便展示;
参数说明:
Xml为传入的xml报文,node为需要获取的循环节点值“record”;
*/
function nodesParse(xml,node){
Trc.Info("循环获取record");
var xmlDom=new ActiveXObject("Microsoft.XMLDOM") ;
if(xmlDom == null){
Trc.Info("create xml object failure");
return "failure";
}
try{
xmlDom.async = "false";
xmlDom.loadXML(xml) ;
Trc.Info("追踪xml"+xml);
var elements = xmlDom.getElementsByTagName("rsp");// 获取根节点集合;
Trc.Info("elements ="+elements+"length="+elements.length);
var body=elements[0].getElementsByTagName("body");//获取body节点集合;
Trc.Info("body "+body+"length="+body.length);
var result=body[0].getElementsByTagName(node); //获取根节点下的某子节点集合;
Trc.Info("result ="+result+"length="+result.length);
var col=[];
for(var i=0;i<result.length;i++){ //循环获取每一个record的子节点文本值;
Trc.Info("into the first for loop ");
var row=[];
var ChiledNodes=result[i].childNodes;//第I个记录record的所有子节点;
Trc.Info("ChiledNodes="+ChiledNodes+"ChiledNodes length="+ChiledNodes.length);
for(var j=0;j<ChiledNodes.length;j++){ // 循环获取每个子节点的值;
Trc.Info("into the second for loop ");
var test=ChiledNodes[j].childNodes;
if(test.length>0){
row[j]=ChiledNodes[j].childNodes[0].nodeValue;
Trc.Info("row["+j+"]="+row[j]);
}else{
row[j]="";
Trc.Info("row["+j+"]="+row[j]);
}
}
Trc.Info("out of the second for loop");
col[i]=row; // col保存所有的记录;
Trc.Info("out of the second for loop");
}
Trc.Info("所有的记录col="+col);
return col;
}catch(err){
Trc.Info("xml : " + xml);
Trc.Info("tagname : " + node);
Trc.Error("runtime err: " + err.description);
}
}
 
- /**
函数说明:
解析xml报文的函数,并获取元素值;
参数说明:
Xml为传入需要解析的xml报文体;target为需要获取的元素节点;
*/
function xmlParse(xml,target){
Trc.Info("MsgParse.js xmlParse");
var xmlDom=new ActiveXObject("Microsoft.XMLDOM") ;
if(xmlDom == null){
Trc.Info("create xml object failure");
return "failure";
}
try{
xmlDom.async = "false";
xmlDom.loadXML(xml) ;
var elements = xmlDom.getElementsByTagName("rsp");
var value = elements[0].getElementsByTagName(target)[0].firstChild.nodeValue;
return value;
}catch(err){
Trc.Info("xml : " + xml);
Trc.Info("tagname : " + target);
Trc.Error("runtime err: " + err.description);
}
return "failure";
}