0

XML ドキュメントから特定のデータを選択する作業を行っています。

xml ドキュメントのサンプルを次に示します。

<data>
<variable name="somedata">
<row>
   <column>data</column> 
   <column>data</column> 
   <column>data</column> 
   <column>data</column> 
   <column>data</column>  
   <column>data</column>  
  </row>
 </variable>
 <variable name="CurrentSession">
  <row>
   <column>data I what to get</column> 
   <column>data I what to get</column> 
   <column />
  </row>
  <row>
   <column>data I what to get</column> 
   <column>data I what to get</column> 
   <column />
   </row>
 </variable>
</data>

Linq to XML でそれを行うことにしました。

これは私がこれまでに持っているものです:

        var doc = XDocument.Load(@"D:\CurrentSession.xml");
        var query = from d in doc.Descendants("row")
                    //where (string)d.Attribute("name") == ("CurrentSession")
                    select (string)d.Element("column");
        foreach (string name in query)
        {
            string xml = "test : " + name + "";
        }

私の問題は、現時点では「列」からすべてのデータを取得している<variable name="currentSession">ことです<row>

行ノードをスキップする方法を理解するのを手伝ってくれる人はいますか?

4

2 に答える 2

0

最初に「変数」を取得し、「場所」でフィルタリングしてから、その行要素と列要素を取得する必要があると思います。

  var doc = XDocument.Load(@"D:\CurrentSession.xml");
  var query = (from d in doc.Descendants("variable")
              where (string)d.Attribute("name") == "CurrentSession"
              select d.Elements("row")).First().Select(row => row.Element("column"));
于 2013-04-05T12:25:44.507 に答える
0

あなたの質問はあまり明確ではありませんが、あなたはただ欲しいと思います:

var query = doc.Descendants("variable")
               .Where(v => (string) v.Attribute("name") == "CurrentSession")
               .Single()
               .Elements("row")
               .Select(row => (string) row.Element("column"));

これは、「CurrentSession」という名前の要素が常に 1 variableあることを前提としており、実際には各行の最初の列の値のみが必要であることに注意してください。

それが必要でない場合は、質問をより明確にする必要があります。

于 2013-04-05T12:26:04.527 に答える