Как сравнить значения из элементов XML и вложенных элементов в C # - PullRequest
0 голосов
/ 09 октября 2019

Я хочу сравнить значение из пользовательского ввода со значениями из элементов 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...