私は私の目標は、以下のXMLスイングとミスLINQ
<AllVendors xmlns="http://important/data">
<Vendor>
<VendorId>1</VendorId>
<VendorName>Vendor A</VendorName>
</Vendor>
<Vendor>
<VendorId>2</VendorId>
<VendorName>Vendor B</VendorName>
</Vendor>
<Vendor>
<VendorId>3</VendorId>
<VendorName>Vendor C</VendorName>
</Vendor>
</AllVendors>
と、次のCLR型
class Vendor
{
public Vendor(string vendorId, string vendorName)
{
VendorId = vendorId;
VendorName = vendorName;
}
public string VendorId { get; set; }
public string VendorName { get; set; }
}
と、次の基本的な相互作用
class VendorInteraction
{
private List<Vendor> Vendors { get; set; }
private void GetVendors(string xml)
{
var rawData = XElement.Parse(xml);
XNamespace ns = Constants.TheNamespace;
**var vendors = rawData.Descendants(ns + "AllVendors").Elements().Elements().Select(vendor => new Vendor(vendor.Value, vendor.Value)).ToList();**
if (Vendors == null)
Vendors = new List<Vendor>();
else
Vendors.Clear();
Vendors.AddRange(vendors);
}
}
を持っていますLINQ to XMLクエリに基づいて投影されるリストを返す。私が持っているクエリは、これまでのところ、このような出力を生成します。私は、リスト内の各ベンダーのインスタンスをしたいと思います
1 1
Vendor A Vendor A
2 2
Vendor B Vendor B
3 3
Vendor C Vendor C
はこのように見えるように:
1 Vendor A
2 Vendor B
3 Vendor C
私はLINQとあなたの助けを借りて、非常に良好ではないですすごく感謝しています!
更新:実際のソリューション
var vendors = rawData.Descendants(ns + "AllVendors").Elements()
.Select(x => new Vendor(x.Element(ns + "VendorId").Value,
x.Element(ns + "VendorName").Value))
.ToList();
@AVDと@BrokenGlassは私は非常に近くなったが、私が要素のコレクションを取得するために必要と思われます。
なぜあなたは 'リストにデシリアライズを検討していない、これを試してみてください '? –
@Munim XmlSerializerはLINQ to XMLよりも効率的であると思いますか?あるアプローチの長所と短所は別のものに比べて何ですか? – syneptody