查询同级唯一的父节点中的XML节点
问题描述:
这可能是一个基本的问题,但我是新来的C#查询XML文件,所以任何帮助将不胜感激..查询同级唯一的父节点中的XML节点
我有这个XML文件:
<?xml version="1.0" encoding="utf-8"?>
<StatementList>
<Point>
<Statement>
<StatementString>S1</StatementString>
<Children>
<Point>
<Statement>
<StatementString>S2</StatementString>
<Children></Children>
</Statement>
<Statement>
<StatementString>!S2</StatementString>
<Children></Children>
</Statement>
</Point>
</Children>
</Statement>
<Statement>
<StatementString>!S1</StatementString>
<Children>
<Point>
<Statement>
<StatementString>S3</StatementString>
<Children></Children>
</Statement>
<Statement>
<StatementString>!S3</StatementString>
<Children></Children>
</Statement>
</Point>
</Children>
</Statement>
</Point>
</StatementList>
我需要查询XML文件,以便我只从每个<Point>
获得兄弟<StatementString>
。例:
一个 S1!S1
乙 S2!S2
Ç S3!S3我目前使用此代码来查询XML文件
,但我似乎无法得到我需要的每个点的价值。
var statementList = from point in pathsDocument.Descendants("Point")
select new
{
};
var points = from statement in pathsDocument.Descendants("Point").Descendants("Statement")
select new
{
statementString = statement.Element("StatementString").Value,
我该怎么做才能得到我需要的值?提前致谢。 };
答
试试这个:
var points = pathsDocument.Descendants("Point");
foreach (var point in points)
{
var statements = point.Elements("Statement").Select(x => x.Element("StatementString").Value);
Console.WriteLine(string.Join(" ", statements.ToArray()));
}
我敢肯定有要组一个更好的方式起来,这样你就不必在foreach得到StatementString集合,但它的晚,我是新空房禁地,我明天工作了,这应该起作用。
这是什么意思(“我该怎么做才能得到我需要的值?”)?你想得到什么? – lexeRoy 2013-05-06 03:12:51
我只需要为每个获取兄弟的StatementStrings的值,就像我上面写的示例一样。原因当前,当我查询XML时,它将返回所有的StatementStrings,包括中的那些,即使是第一个。 –
jaqui
2013-05-06 03:20:03
我的答案不适合你吗?它应该 - 我在我的机器上运行它,并且它提供了你想要的数据。 – Gjeltema 2013-05-06 03:24:08