Я пытаюсь ознакомиться с использованием XDocument
API для анализа XML с использованием лямбда-синтаксиса.
Я хотел бы создать список IEnumerable
из Product
на основе следующей XML-структуры. Я знаю, как получить все узлы product
, но я хочу получить каждый из атрибутов name
узлов продукта, а затем выбрать каждый узел item
в узле "product" и проанализировать его значения.
Итак, я хочу взять этот XML:
<products>
<product name="Prod1">
<item hwid="abk9184">
<href>Prod1/abk9184_en-us/abk9184.html</href>
<localization>en-us</localization>
<build.start>2011-06-08 22:02 PM</build.start>
<build.icp>9.0.192.32</build.icp>
</item>
<item hwid="abk9185">
<href>Prod1/abk9185_en-us/abk9185.html</href>
<localization>en-us</localization>
<build.start>2011-06-08 22:03 PM</build.start>
<build.icp>9.0.192.32</build.icp>
</item>
</product>
<product name="Prod2">
<item hwid="aa6410">
<href>Prod2/aa6410_en-us/aa6410.html</href>
<localization>en-us</localization>
<build.start>2011-06-08 22:04 PM</build.start>
<build.icp>9.0.192.32</build.icp>
</item>
</product>
</products>
И из этого я хотел бы получить список этих:
public class Product
{
public string Name { get; set; }
public string Hwid { get; set; }
public string Href { get; set; }
public string Localization { get; set; }
public DateTime BuildDateTime { get; set; }
public string IcpBuildVersion { get; set; }
}
Так что, хотя у меня есть 2 узла продукта, в итоге я получу множество экземпляров каждого продукта. Я хотел бы узнать, как это сделать, используя XDocument
и синтаксис лямбда-выражений. Может кто-нибудь показать мне путь?
IEnumerable<Product> products = xDocument.Decendants("product")
.Select(e => new Product { Name = e.Name })
Но подумайте, что здесь должны быть какие-то циклы, чтобы получить каждый элемент от каждого продукта.