0

这可能是一个基本问题,但我是在 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,

我应该怎么做才能只获得我需要的值?提前致谢。};

4

1 回答 1

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 集合,但是已经晚了,我脑残了,我明天还有工作,这应该可以工作。

于 2013-05-06T03:01:41.997 回答