0

この xml データは、私にとっては少しトリッキーです。次のように構成されています。

<site time="local">
    <key>000-000-000</key>
    <valid-time period-name="Monday">2012-09-03T06:00:00-04:00</valid-time>
    <valid-time period-name="Tuesday">2012-09-04T06:00:00-04:00</valid-time>
    <valid-time period-name="Wednesday">2012-09-05T06:00:00-04:00</valid-time>
    <valid-time period-name="Thursday">2012-09-06T06:00:00-04:00</valid-time>
 </site>
 <site time="local">
    <key>123-456-789</key>
    <valid-time period-name="Monday">2012-09-03T06:00:00-04:00</valid-time>
    <valid-time period-name="Tuesday">2012-09-04T06:00:00-04:00</valid-time>
    <valid-time period-name="Wednesday">2012-09-05T06:00:00-04:00</valid-time>
    <valid-time period-name="Thursday">2012-09-06T06:00:00-04:00</valid-time>
 </site>
...more <site time="">...

私はデータを取得するためにこれをやっています:

xmlCurrent = from d in Xmldata.Descendants("site")
                        .Where(s => s.Element("key").Value.Equals("123-456-789"))
                        .Select(x => new { content = x.Value})
                        .ToList();

しかし、すべてのコンテンツが単一の文字列としてリストの 1 つのインデックスに入れられます。各値を別のインデックスに取得するにはどうすればよいでしょうか?

4

1 に答える 1

2

現在のコードは<site>要素を選択します。

おそらく、次のようなものが必要です。

  xmlCurrent = from d in Xmldata.Descendants("site")
               where d.Element("key").Value.Equals("123-456-789")
               select d.Elements("valid-time");

それはあなたに与えるでしょうIEnumerable<IEnumerable<XElement>>、多分あなたはそれを平らにしたいと思うでしょう。

//untested
IEnumerable<XElement> current =  Xmldata
     .Descendants("site")
     .Where(s => s.Element("key").Value.Equals("123-456-789") )
     .SelectMany(s => s.Elements("valid-time") );
于 2012-09-03T20:22:59.823 に答える