gpt4 book ai didi

c# - 使用 Linq 从 xml 文件中读取值

转载 作者:数据小太阳 更新时间:2023-10-29 02:38:10 25 4
gpt4 key购买 nike

我在从 xml 文件中读取值时遇到问题。这是 xml 文件:

<root>
<defaultGroups name="Sikker">
<group name="0ASK" />
<group name="0ASKAPP" />
<group name="0ASKFELLES" />
<group name="0SYSAPP" />
<group name="0SYSAPPoffice" />
<group name="10WTS" />
</defaultGroups>
<defaultGroups name="Intern">
<group name="11WTS" />
<group name="1ASK" />
<group name="1ASKAPP" />
<group name="1ASKFELLES" />
<group name="Domain Users" />
<group name="Askvoll brukere" />
<group name="1SYSAPP" />
<group name="1SYSAPPAdobeReader" />
<group name="1SYSAPPEXCEL" />
<group name="1SYSAPPIEXPLORER" />
<group name="1SYSAPPOUTLOOK" />
<group name="1SYSAPPPOWERPOINT" />
<group name="1SYSAPPWORD" />
</defaultGroups>
</root>

使用下面显示的函数,我应该只读取 <defaultGroups name="Sikker"> 中的值.我确实得到了第一个值:“0ASK”,但没有得到其余的值。有人可以帮我吗? (我是 Linq 的新手)

这是我使用的 C# 函数:

public string GetSikkerSoneDefaultGroups(string companyName)
{
string sikkerSone = "";

XDocument doc = XDocument.Load("xml\\defaults\\" + companyName + ".xml");
var groups = from defaultGroups in doc.Descendants("defaultGroups")
where defaultGroups.Attribute("name").Value == "Sikker"
select new
{
g = defaultGroups.Element("group").Attribute("name").Value
};

foreach (var group in groups)
{
sikkerSone += group.g + ";";
}

doc = null;

return sikkerSone;

}

最佳答案

您正在使用:

g = defaultGroups.Element("group").Attribute("name").Value

它只选择 defaultGroups 的第一个子元素。我认为我们可以大大简化它,因为您处理它的方式需要一个子查询。为什么不直接获取组元素呢?

var groups = from defaultGroup in doc.Descendants("group")
where defaultGroup.Parent.Attribute("name").Value == "Sikker"
select defaultGroup.Attribute("name").Value;


// Make it into a string
foreach (var group in groups)
{
sikkerSone += group + ";";
}

关于c# - 使用 Linq 从 xml 文件中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1363745/

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