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

我想您应该首先获取“变量”,按“where”对其进行过滤,然后获取其行和列元素:

  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"));

请注意,这假设始终存在一个 variable名为“CurrentSession”的元素,并且您实际上只需要每行第一列的值。

如果这不是您所需要的,那么您的问题需要更清楚。

于 2013-04-05T12:26:04.527 回答