gpt4 book ai didi

c# - 如何使用 LINQ 选择内部 XML 节点的集合?

转载 作者:行者123 更新时间:2023-11-30 22:40:27 25 4
gpt4 key购买 nike

我有以下 xml。给定一个 UIDManufacturer NameImage Layout,我想找出 xml 中存在的所有可能的尺寸。

<Rules>
<UniqueID UID="123413">
<Manufacturer Name="XYZ Company">
<Image Layout="Portrait">
<Size rows="512" cols="512" price="x" />
<Size rows="1024" cols="1024" price="y" />
</Image>
</Manufacturer>
</UniqueID>
</Rules>

我现在的做法是:

XElement rules = XElement.Parse(xmlDoc.OuterXml);

var uids = rules.Elements("UniqueID")
.Where(x=> (string)x.Attribute("UID")=="123413")
.ToList();

foreach(var uid in uids)
{
var manufacturers = uid.Elements(("UniqueID")
.Where(x=> (string)x.Attribute("Name")=="XYZ Company")
.ToList();
}

依此类推,直到我收集到所有可能的尺寸。

所以我使用了 3 个 foreach 循环。有没有更好的方法可以使用 LINQ 仅用一行代码来实现这一目标?

最佳答案

有点啰嗦,不过可以用XPathSelectElements:

 var sizes = rules.XPathSelectElements("//UniqueId[@UID = '123413']/Manufacturer[@Name = 'XYZ Company']//Size");

显然,您可以使用字符串格式化来动态插入@UID 和@Name 的值。

确保包含 System.Xml.XPath

关于c# - 如何使用 LINQ 选择内部 XML 节点的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198352/

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