我正在从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">
范围内“列”中的数据,但是我很难跳过{{1} }
任何人都可以帮我弄清楚如何跳过行节点。
答案 0 :(得分: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"));
答案 1 :(得分:0)
你的问题并不十分明确,但我想你只想要:
var query = doc.Descendants("variable")
.Where(v => (string) v.Attribute("name") == "CurrentSession")
.Single()
.Elements("row")
.Select(row => (string) row.Element("column"));
请注意,假设始终存在名为“CurrentSession”的单个 variable
元素,并且您实际上只需要每行第一列的值。
如果这不是你所需要的,你需要在你的问题中更清楚。