Extract data from XML body

Solution

Below given a sample XML body

From this, we can extract data using the below sample code

var fileContent = fileObj.getContents(); //if xml data is in file
//Parse XML to a variable
var xmlObj = xmlMod.Parser.fromString({
    text: fileContent
});
//Getting values from 945 XML file
//Traverse to each node
var orderheader = xmlMod.XPath.select
({
    node: xmlObj,
    xpath: '//ns0:order_header'
});
var itemNode = xmlMod.XPath.select({
    node: xmlObj,
    xpath: '//ns0:item'
});
var orderNum = orderheader[0].getElementsByTagName({
    tagName: 'ns0:cust_order_num'
})[0].textContent;
var trackNum = orderheader[0].getElementsByTagName({
    tagName: 'ns0:tracking_number'
})[0];
var trackURL = orderheader[0].getElementsByTagName({
    tagName: 'ns0:tracking_url'
})[0];
log.debug("after trackURL")
var carrier = orderheader[0].getElementsByTagName({
    tagName: 'ns0:carrier_name'
})[0];
//Using the nodes we can get extract datas
var itemObj = [];
for (var i = 0; i < itemNode.length; i++) {
    var obj = {};
    var itemname = itemNode[i].getElementsByTagName({
        tagName: 'ns0:item_code'
    })[0].textContent
    var shipQty = itemNode[i].getElementsByTagName({
        tagName: 'ns0:ship_qty'
    })[0].textContent
    var linenumber = itemNode[i].getElementsByTagName({
        tagName: 'ns0:line_num'
    })[0].textContent
    if (shipQty > 0) {
        obj.item = itemname;
        obj.qty = shipQty;
        obj.linenum = linenumber;
        itemObj.push(obj);
    }

}
log.debug("ItemObj", itemObj);

Leave a comment

Your email address will not be published. Required fields are marked *