C# 仅在父节点内查询同级XML节点
这可能是一个基本的问题,但我不熟悉用C#查询XML文件,因此,如果有任何帮助,我将不胜感激 我有一个XML文件:C# 仅在父节点内查询同级XML节点,c#,xml,excel,siblings,C#,Xml,Excel,Siblings,这可能是一个基本的问题,但我不熟悉用C#查询XML文件,因此,如果有任何帮助,我将不胜感激 我有一个XML文件: <?xml version="1.0" encoding="utf-8"?> <StatementList> <Point> <Statement> <StatementString>S1</StatementString> <Children>
<?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>
我应该怎么做才能得到我需要的值?提前谢谢。
}; 试试这个:
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集合,但时间已经晚了,我已经脑死亡,明天还有工作,这应该可以工作。这是什么意思(“我应该怎么做才能只获得我需要的值?”)?你想得到什么?我只需要得到每个语句的同级语句字符串的值,就像我上面写的例子一样。。因为目前,当我查询XML时,它会返回所有语句字符串,包括其中的那些,即使是第一个。我的答案对你不起作用吗?它应该-我在我的机器上运行了它,它提供了您想要的数据。
点中有两个语句字符串
值。一个来自点,另一个在孩子们的陈述下。两个都要吗?或仅适用于儿童?Gjeltema,当我尝试使用代码时,出现了两个错误“无法从”System.Collections.Generic.IEnumerable“转换为”string[]”,以及“与“string.Join(string,string[])”匹配的最佳重载方法有一些无效参数”。为什么呢?
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()));
}