gpt4 book ai didi

c# - 从 XML 文件中检索数据

转载 作者:数据小太阳 更新时间:2023-10-29 01:53:52 24 4
gpt4 key购买 nike

我似乎在使用 C# 检索 XML 值时遇到问题,我知道这是由于我对 C# 和 .XML 的了解非常有限。

我得到了以下 XML 文件

<PowerBuilderRunTimes>
<PowerBuilderRunTime>
<Version>12</Version>
<Files>
<File>EasySoap110.dll</File>
<File>exPat110.dll</File>
<File>pbacc110.dll</File>
</File>
</PowerBuilderRunTime>
</PowerBuilderRunTimes>

我要处理 XML 文件并确保文件夹中的每个文件都存在(这是简单的部分)。这是我遇到困难的 XML 文件的处理。这是我到目前为止所做的:

var runtimeXml = File.ReadAllText(string.Format("{0}\\{1}", configPath, Resource.PBRuntimes));

var doc = XDocument.Parse(runtimeXml);
var topElement = doc.Element("PowerBuilderRunTimes");
var elements = topElement.Elements("PowerBuilderRunTime");

foreach (XElement section in elements)
{
//pbVersion is grabbed earlier. It is the version of PowerBuilder
if( section.Element("Version").Value.Equals(string.Format("{0}", pbVersion ) ) )
{
var files = section.Elements("Files");

var fileList = new List<string>();

foreach (XElement area in files)
{
fileList.Add(area.Element("File").Value);
}
}
}

我的问题是字符串列表只填充了一个值“EasySoap110.dll”,其他所有值都被忽略了。有人可以帮助我吗,因为我不知所措。

最佳答案

看看这个:

var files = section.Elements("Files");

var fileList = new List<string>();

foreach (XElement area in files)
{
fileList.Add(area.Element("File").Value);
}

您正在遍历每个 Files 元素,然后找到其中的第一个 File 元素。只有一个 Files 元素 - 您需要迭代其中的 File 元素。

但是,肯定有更好的方法来做到这一点。例如:

var doc = XDocument.Load(Path.Combine(configPath, Resource.PBRuntimes));
var fileList = (from runtime in doc.Root.Elements("PowerBuilderRunTime")
where (int) runtime.Element("Version") == pbVersion
from file in runtime.Element("Files").Elements("File")
select file.Value)
.ToList();

请注意,如果有多个匹配PowerBuilderRunTime元素,这将创建一个包含所有所有文件的列表em>那些元素。那可能不是你想要的。例如,您可能想要:

var doc = XDocument.Load(Path.Combine(configPath, Resource.PBRuntimes));
var runtime = doc.Root
.Elements("PowerBuilderRunTime")
.Where(r => (int) r.Element("Version") == pbVersion)
.Single();

var fileList = runtime.Element("Files")
.Elements("File")
.Select(x => x.Value)
.ToList();

这将验证是否有一个匹配的运行时。

关于c# - 从 XML 文件中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6431255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com