1

私はこれに似たxml構造を持っています:

<cars>
  <car>
    <make>Ford</make>
    <model>F-150</model>
    <year>2011</year>
    <customs>
      <customAttribute>Color</customAttribute>
      <customValue>Black</customValue>
      <customAttribute>Doors</customAttribute>
      <customValue>2</customValue>
    </customs>
  </car>
</cars>

そして、次のようなメソッドで車のリストを返したいと思います:

return (from car in cars.Descendants("car")
       select new Car {
           Make = car.Element("make").Value,
           Model = car.Element("model").Value,
           Year = car.Element("year").Value
           Color = ?????,
           Doors = ?????
       });

Color フィールドと Doors フィールドに入力するにはどうすればよいですか? 適切な customValue ノードの customAttribute 値を取得する必要があります。

これを達成する方法がよくわかりません。

どうもありがとう!

4

1 に答える 1

2

xml @line<year>にタイプミスがありますが...

これでうまくいくはずです。もちろん、いくつかの null チェックの方が優れています。

ちなみに、色 (およびドア) がノードではなくアトリビュートであったとしても、それはさらに悪いことではありません...

var result = cars.Descendants("car")
              .Select(car => new Car
                     {
                        Make = car.Element("make").Value,
                        Model = car.Element("model").Value,
                        Year = car.Element("year").Value,
                        Color = (car.Element("customs").Elements("customAttribute").First(m => m.Value == "Color").NextNode as XElement).Value,
                        Doors = (car.Element("customs").Elements("customAttribute").First(m => m.Value == "Doors").NextNode as XElement).Value
                     })
              .ToList();
于 2012-06-27T20:02:21.517 に答える