Я хочу сравнить значение из пользовательского ввода со значениями из элементов XML и выбрать значения из другого элемента XML. Например: рассмотрите приведенный ниже 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>
Теперь, первоначально, я проверяю DccCardIssueNumber , предоставленный пользователем, и, если он совпадает, я хочу проверить, есть ли у насПодтип для этой Карты. Если подтип присутствует, я хочу напечатать DccCardIssueSubTypeFullName , а если подтипа нет, я хочу напечатать просто DccCardIssuerFullName .
Пока я реализовал это:
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;
}
}
}
}
Здесь y обозначает номер подтипа (1 или 2), а x обозначает DCCCardIssueNumber