I need to get fetch and display the 1st and 3rd column element from the enquiryRecord
node from an XML file using C# in a console app.
The XML:
<?xml version="1.0" encoding="UTF-8"?>
<T24 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.temenos.com/T24/OFSML/130 ofsml13.xsd" xmlns="http://www.temenos.com/T24/OFSML/130">
<serviceResponse>
<ofsStandardEnquiry name="E.FOS.REQ.INFO.1.MCB" status="OK">
<enquiryColumn id="RETURN.CODE" label="RETURN.CODE" type="ALPHANUMERIC"/>
<enquiryColumn id="ERROR.MSG" label="ERROR.MSG" type="ALPHANUMERIC"/>
<enquiryColumn id="CUSTOMER" label="CUSTOMER" type="ALPHANUMERIC"/>
<enquiryColumn id="SHORT.NAME" label="SHORT.NAME" type="ALPHANUMERIC"/>
<enquiryColumn id="IS.INDIVIDUAL" label="IS.INDIVIDUAL" type="ALPHANUMERIC"/>
<enquiryColumn id="IS.MINOR" label="IS.MINOR" type="ALPHANUMERIC"/>
<enquiryColumn id="IS.MCB.STAFF" label="IS.MCB.STAFF" type="ALPHANUMERIC"/>
<enquiryColumn id="IS.ACTIVE.CUSTOMER" label="IS.ACTIVE.CUSTOMER" type="ALPHANUMERIC"/>
<enquiryColumn id="IS.KYC.COMPLIANT" label="IS.KYC.COMPLIANT" type="ALPHANUMERIC"/>
<enquiryColumn id="PHONE" label="PHONE" type="ALPHANUMERIC"/>
<enquiryColumn id="OFF.PHONE" label="OFF.PHONE" type="ALPHANUMERIC"/>
<enquiryColumn id="SMS" label="SMS" type="ALPHANUMERIC"/>
<enquiryColumn id="EMAIL" label="EMAIL" type="ALPHANUMERIC"/>
<enquiryColumn id="DE.ADDRESS.ID" label="DE.ADDRESS.ID" type="ALPHANUMERIC"/>
<enquiryColumn id="STREET.ADDR" label="STREET.ADDR" type="ALPHANUMERIC"/>
<enquiryColumn id="ADDRESS.LINE2" label="ADDRESS.LINE2" type="ALPHANUMERIC"/>
<enquiryColumn id="ADDRESS.LINE3" label="ADDRESS.LINE3" type="ALPHANUMERIC"/>
<enquiryColumn id="TOWN.COUNTRY" label="TOWN.COUNTRY" type="ALPHANUMERIC"/>
<enquiryColumn id="POST.CODE" label="POST.CODE" type="ALPHANUMERIC"/>
<enquiryColumn id="COUNTRY" label="COUNTRY" type="ALPHANUMERIC"/>
<enquiryColumn id="COUNTRY.CODE" label="COUNTRY.CODE" type="ALPHANUMERIC"/>
<enquiryColumn id="CONTACT.ADD" label="CONTACT.ADD" type="ALPHANUMERIC"/>
<enquiryColumn id="JOINT.BORR" label="JOINT.BORR" type="ALPHANUMERIC"/>
<enquiryColumn id="SHORT.NAME" label="SHORT.NAME" type="ALPHANUMERIC"/>
<enquiryColumn id="APPLICATION.DATE" label="APPLICATION.DATE" type="ALPHANUMERIC"/>
<enquiryColumn id="CO.CODE" label="CO.CODE" type="ALPHANUMERIC"/>
<enquiryColumn id="COMPANY.NAME" label="COMPANY.NAME" type="ALPHANUMERIC"/>
<enquiryColumn id="PROCESS.DEFINITION" label="PROCESS.DEFINITION" type="ALPHANUMERIC"/>
<enquiryColumn id="PROCESS.DEFINITION.DESC" label="PROCESS.DEFINITION.DESC" type="ALPHANUMERIC"/>
<enquiryColumn id="FOS.TYPE" label="FOS.TYPE" type="ALPHANUMERIC"/>
<enquiryColumn id="COLLATERAL.ID" label="COLLATERAL.ID" type="ALPHANUMERIC"/>
<enquiryColumn id="COLL.CCY" label="COLL.CCY" type="ALPHANUMERIC"/>
<enquiryColumn id="COLL.AMT" label="COLL.AMT" type="ALPHANUMERIC"/>
<enquiryColumn id="ASSET.ID" label="ASSET.ID" type="ALPHANUMERIC"/>
<enquiryColumn id="MAXIMUM.AMT" label="MAXIMUM.AMT" type="ALPHANUMERIC"/>
<enquiryColumn id="FACILITY.TYPE" label="FACILITY.TYPE" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.TYPE" label="RF.LIMIT.TYPE" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.DESC" label="RF.LIMIT.DESC" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.CCY" label="RF.LIMIT.CCY" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.CCY.DESC" label="RF.LIMIT.CCY.DESC" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.AMT" label="RF.LIMIT.AMT" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.EXP.DATE" label="RF.LIMIT.EXP.DATE" type="ALPHANUMERIC"/>
<enquiryColumn id="RF.LIMIT.REVIEW.DATE" label="RF.LIMIT.REVIEW.DATE" type="ALPHANUMERIC"/>
<enquiryColumn id="CATEGORY" label="CATEGORY" type="ALPHANUMERIC"/>
<enquiryColumn id="CATEGORY.DESC" label="CATEGORY.DESC" type="ALPHANUMERIC"/>
<enquiryColumn id="BOM.PURPOSE" label="BOM.PURPOSE" type="ALPHANUMERIC"/>
<enquiryColumn id="HOUSING.PURPOSE.ID" label="HOUSING.PURPOSE.ID" type="ALPHANUMERIC"/>
<enquiryColumn id="HOUSING.PURPOSE.DESC" label="HOUSING.PURPOSE.DESC" type="ALPHANUMERIC"/>
<enquiryColumn id="TERM" label="TERM" type="ALPHANUMERIC"/>
<enquiryColumn id="NRF.CCY" label="NRF.CCY" type="ALPHANUMERIC"/>
<enquiryColumn id="NRF.CCY.DESC" label="NRF.CCY.DESC" type="ALPHANUMERIC"/>
<enquiryColumn id="NRF.AMT" label="NRF.AMT" type="ALPHANUMERIC"/>
<enquiryRecord>
<column>0</column>
<column/>
<column>1123785</column>
<column>SONAyerG</column>
<column>N</column>
<column/>
<column/>
<column>Y</column>
<column>N</column>
<column>7y0</column>
<column/>
<column/>
<column/>
<column>MU00y.C-1123785.PRINT.1</column>
<column>C.OyL</column>
<column>HOy1</column>
<column/>
<column>VAyrAS</column>
<column/>
<column>yrUS</column>
<column>MU</column>
<column/>
<column/>
<column/>
<column>20ry7</column>
<column>MU0yr001</column>
<column>MCB - T24 R14 SIM</column>
<column>FOS.MCB</column>
<column>Secured Facilities-Non Individual</column>
<column>SECURED</column>
<column>CO.1123785.1|CO.1123785.2|CO.1123785.5|CO.1123785.7|CO.1123785.11|CO.1123785.6|CO.1123785.3</column>
<column>MUR|MUR|MUR|MUR|MUR|MUR|MUR</column>
<column>610000|1014000|1014000|350000|1000000.00|750000.00|1500000</column>
<column>AS.1123785.1]AS.437756.1|AS.1123785.1|AS.437756.2|AS.1123785.5|AS.1123785.1]AS.437756.3]AS.765697.1|AS.1123785.4|AS.1123785.2</column>
<column>1500000]||||]]||</column>
<column>REVOLVING|REVOLVING|REVOLVING|REVOLVING|REVOLVING|REVOLVING</column>
<column>101000|107010|107020|107030|107040|107050</column>
<column>OVERDRAFTS|MISC GTEES|TENDER BONDS|PERF BONDS|ADV PAYMT BONDS|FINANCIAL GTEES</column>
<column>MUR|MUR|MUR|MUR|MUR|MUR</column>
<column>Mauritian Rupee|Mauritian Rupee|Mauritian Rupee|Mauritian Rupee|Mauritian Rupee|Mauritian Rupee</column>
<column>2800000.00|1600000.00|1600000.00|1600000.00|1600000.00|1600000.00</column>
<column>29990101|29990101|29990101|29990101|29990101|29990101</column>
<column>20160430|20160430|20160430|20160430|20160430|20160430</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
<column>|||||</column>
</enquiryRecord>
</ofsStandardEnquiry>
</serviceResponse>
</T24>
The code:
var columns = XDocument.Load("XML01.xml").Root
.Descendants("enquiryRecord")
.Descendants("column")
.ToList();
Console.WriteLine((string)columns.ElementAtOrDefault(5)); // 0
Console.WriteLine((string)columns.ElementAtOrDefault(10)); // data
Console.ReadLine();
How shall I proceed?
XNamespace ns = "http://www.temenos.com/T24/OFSML/130";
var columns = XDocument.Load("XML01.xml")
.Descendants(ns + "enquiryRecord")
.Descendants(ns + "column")
.ToList();
Console.WriteLine(columns.ElementAtOrDefault(0)?.Value); // 0
Console.WriteLine(columns.ElementAtOrDefault(2)?.Value); // data
// Or
Console.WriteLine((string)columns.ElementAtOrDefault(0)); // 0
Console.WriteLine((string)columns.ElementAtOrDefault(2)); // data
ElementAtOrDefault
- To avoid IndexOutOfRange
exception in the case there is not such position. ?.
- To avoid NullReferenceException
in the case that position doesn't exist and returned default value The problem was that the above code was missing the adding on the namespace of those elements. See this question for more clarification
you could parse your XML using XPath
var xDocument = XDocument.Load(fileName);
var selectedNodes = xDocument.Root.XPathSelectElements("./node2/ofsStandardEnquiry/enquiryRecord/column");
var nodeArray = selectedNodes.Select(s => s.Value).ToArray();
Console.WriteLine(nodeArray[0]);
Console.WriteLine(nodeArray[2]);
I am sure this can be improved, but I usually use XPath when I need to parse and XML file.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.