I want to compare the value from the user input to the values from the XML elements and select values from another XML element. For example: Please consider the below XML:
<?xml version="1.0" encoding="utf-8" ?>
<CardTypes>
<Card>
<DccCardIssueNumber>99</DccCardIssueNumber>
<DccCardIssuerName>VIS</DccCardIssuerName>
<DccCardIssuerFullName>VISHAL</DccCardIssuerFullName>
<RPOSCardType>1600</RPOSCardType>
<DeliveryNote>false</DeliveryNote>
</Card>
<Card>
<DccCardIssueNumber>20</DccCardIssueNumber>
<DccCardIssuerName>VIS</DccCardIssuerName>
<DccCardIssuerFullName>VISA</DccCardIssuerFullName>
<RPOSCardType>1600</RPOSCardType>
<DeliveryNote>false</DeliveryNote>
<SubType>
<DccCardIssueSubTypeNumber>1</DccCardIssueSubTypeNumber>
<DccCardIssueSubTypeName>VIS</DccCardIssueSubTypeName>
<DccCardIssueSubTypeFullName>VISA</DccCardIssueSubTypeFullName>
<RPOSCardType>1600</RPOSCardType>
<DeliveryNote>false</DeliveryNote>
</SubType>
<SubType>
<DccCardIssueSubTypeNumber>2</DccCardIssueSubTypeNumber>
<DccCardIssueSubTypeName>DKV</DccCardIssueSubTypeName>
<DccCardIssueSubTypeFullName>DKV</DccCardIssueSubTypeFullName>
<RPOSCardType>2510</RPOSCardType>
<DeliveryNote>false</DeliveryNote>
</SubType>
</Card>
</CardTypes>
Now, initially, I am checking the DccCardIssueNumber provided by the user, and if it matches, I want to check whether we have a SubType for that Card. If subtype is present, I want to print DccCardIssueSubTypeFullName and if SubType is not present, I want to print just DccCardIssuerFullName.
So far I have implemented this:
using (XmlReader xr = XmlReader.Create("DccCardTypeMap.xml"))
{
while (xr.Read())
{
if (xr.IsStartElement())
{
switch (xr.Name.ToString())
{
case "DccCardIssueNumber":
if (y == "")
{
if (xr.ReadString() == x)
{
xr.ReadToFollowing("DccCardIssuerFullName");
transaction.CardTypeName = xr.ReadString();
}
}
else
{
if (xr.ReadString() == x)
{
xr.ReadToFollowing("DccCardIssueSubTypeNumber");
if (xr.ReadString() == y)
{
xr.ReadToFollowing("DccCardIssueSubTypeFullName");
transaction.CardTypeName = xr.ReadString();
}
}
}
break;
}
}
}
}
Here, y indicates the Subtype number (1 or 2) and x indicated the DCCCardIssueNumber