Разбор XML из возвращенного WDSL - PullRequest
0 голосов
/ 07 марта 2019

никогда раньше не работал с веб-сервисами, так что будьте осторожны, считайте меня идиотом.Я успешно возвращаю приведенную ниже структуру xml из веб-службы, используя ссылку на службу в c # asp.net

<Rows>
<Type>
<ID>5555557</ID>
<Type_Name>Product 1 Name </Type_Name>

<AvailableDate>18/03/2019</AvailableDate>
<AvailableDate>01/04/2019</AvailableDate>
<AvailableDate>15/04/2019</AvailableDate>
<AvailableDate>29/04/2019</AvailableDate>
<AvailableDate>13/05/2019</AvailableDate>
<AvailableDate>28/05/2019</AvailableDate>
<AvailableDate>10/06/2019</AvailableDate>
<AvailableDate>24/06/2019</AvailableDate>

<service>FALSE</service>
</Type>

<Type>
<ID>5555559</ID>
<Type_Name>Product 2 Name </Type_Name>

<AvailableDate>11/03/2019</AvailableDate>
<AvailableDate>25/03/2019</AvailableDate>
<AvailableDate>08/04/2019</AvailableDate>
<AvailableDate>23/04/2019</AvailableDate>
<AvailableDate>07/05/2019</AvailableDate>
<AvailableDate>20/05/2019</AvailableDate>
<AvailableDate>03/06/2019</AvailableDate>
<AvailableDate>17/06/2019</AvailableDate>
<AvailableDate>01/07/2019</AvailableDate>
<AvailableDate>15/07/2019</AvailableDate>
<AvailableDate>29/07/2019</AvailableDate>
<AvailableDate>12/08/2019</AvailableDate>
<AvailableDate>27/08/2019</AvailableDate>
<AvailableDate>09/09/2019</AvailableDate>
<AvailableDate>23/09/2019</AvailableDate>

<service>FALSE</service>
</Type>
</Rows>

Я использую список и построитель строк, чтобы выписать xml, и все работает нормально для ID и Type_name и успешно отображает их.Но возникли проблемы с упаковкой доступных дат в виде массива для отображения как часть вышеупомянутого.Я ожидал бы, что другой узел Xml будет ссылаться на доступные даты, но все они находятся на одном уровне.Есть идеи?

enter 

SR1.WebService2SoapClient client = new SR1.WebService2SoapClient("WebService2Soap");
 XmlNode node = client.getMethodpaiingcredentials(cred1, "cred2");           

            XmlReader r = XmlReader.Create(new StringReader(node.OuterXml));
           //adding to a static list
            MyList = (          
                      from e in XDocument.Load(r).Root.Elements("Type")
                      select new Property //(public class)
                      {
                          ID = (int)e.Element("ID"),                         
                          Type = (string)e.Element("Type_Name"),
						//Trying to wrap all dates in loop
                          CDate = (
                              from o in e.Elements("Type").Elements("AvailableDate")
                              select new AvailableDates
                              {                           
							  ADate = (DateTime)o.Element("AvailableDate"),
                              })
                              .ToArray()
                      })
                      .ToList();

            StringBuilder sb = new StringBuilder();
            foreach (var xmlID in MyList)
            {
                sb.Append("<table border='1px' cellpadding='1' cellspacing='1' class='customers'>\n");
                sb.Append("<TD>"); sb.Append(xmlID.ID); sb.Append("</TD>");
                sb.Append("<TD>"); sb.Append(xmlID.Type_Name); sb.Append("</TD>");


                foreach (var OD in myList[0].CDate)
                {
                    
                    sb.Append("<TD>"); sb.Append(OD.ColDate); sb.Append(" - </TD>");
                   
                }

                sb.Append("</TR>\n");                
            }
            sb.Append("</TABLE>");
            litCollections.Text = sb.ToString();

здесь

...