这可能是一个基本问题,但我是新手在C#中查询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文件,以便我只从每个<StatementString>
获取兄弟<Point>
。例:
A S1!S1
B S2!S2
C 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,
我应该怎么做才能获得我需要的价值?提前致谢。 };
答案 0 :(得分:1)
试试这个:
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集合,但是现在已经很晚了,我脑力激动,我明天有工作,这应该有效。