попытка получить элементы списка из запроса xml linq - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь перебрать список элементов в документе xml и вернуть значение каждого элемента в виде списка. Однако он возвращает все значения в одном элементе списка, объединяя их вместе. Есть ли способ, которым я могу разделить каждое значение элемента в свой элемент списка?

Заранее спасибо, в данный момент возвращается «Item1Item2Item3» - тот же элемент списка

  public List<string> ReturnRow(string RowToReturn, string parentelement)
            {
            List<XElement> ElementList = new List<XElement>();
            List<string> ItemstoReturn = new List<string>();
            try
            {
                //loop through whole doc and get blocks that match the Row (should only be 1)
                ItemstoReturn = (from element in XmlDoc.Root.Elements(parentelement)
                                 where element.Attribute(ParentAttribName).Value == RowToReturn
                                 select element.Value).ToList();

                //loop through inner elements to retrieve values 
                foreach (XElement eachelement in ElementList)
                {
                    ItemstoReturn.Add(eachelement.Value);
                }
                //return values to list
                return ItemstoReturn;
            }
            catch(Exception ex)
            {
                ex.ToString();
                return null;
            }
        }

1 Ответ

0 голосов
/ 05 февраля 2020

Ввод XML

<recipes>
  <recipe name="vidmar"/>
  <recipe name="oven">
      <ESN>25058301</ESN>
      <ESN>25058302</ESN>
  </recipe>
</recipes>

Используя XElement, я могу читать ESN значения используя LINQ

using System.Xml.Linq; //namespace
...

string xml = File.ReadAllText(xmlFilePath);

XElement doc = XElement.Parse(xml);
var result = doc.Elements("recipe")
                .Where(c => c.Attribute("name").Value == "oven");

foreach(var element in result.Descendants("ESN"))
{
    Console.WriteLine(element.Value.ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...