Запрос одноуровневых узлов XML только внутри родительского узла
Это может быть основной вопрос, но я новичок в запросах файлов XML в C#, поэтому любая помощь будет принята с благодарностью.
У меня есть этот файл 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,
Что я должен сделать, чтобы получить только те значения, которые мне нужны? заранее спасибо. };
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()));
}
Я уверен, что есть лучший способ сгруппировать их, чтобы у вас не было предела, чтобы получить коллекцию StatementString, но уже поздно, я с ума схожу, и у меня завтра работа, и это должно сработать.