gpt4 book ai didi

c#-3.0 - Linq to XML 文档遍历

转载 作者:行者123 更新时间:2023-12-02 19:16:11 26 4
gpt4 key购买 nike

我有一个像这样的 xml 文档:

<?xml version="1.0" encoding="utf-8" ?>
<demographics>
<country id="1" value="USA">
<state id ="1" value="California">
<city>Long Beach</city>
<city>Los Angeles</city>
<city>San Diego</city>
</state>
<state id ="2" value="Arizona">
<city>Tucson</city>
<city>Phoenix</city>
<city>Tempe</city>
</state>
</country>
<country id="2" value="Mexico">
<state id ="1" value="Baja California">
<city>Tijuana</city>
<city>Rosarito</city>
</state>
</country>
</demographics>

如何设置 LINQ 查询来执行以下操作:1. 获取所有国家2. 获取一个国家的所有州3. 获取特定国家/地区某个州内的所有城市?

我尝试了一下,但我有点困惑何时使用 Elements["NodeName"] 和 Descendants 等。我知道我不是最聪明的 XML 专家。 XML 文件的格式对于简单遍历来说是否正确?

最佳答案

从文件加载文档:

XDocument document = XDocument.Load("input.xml");

要获取所有国家/地区的名称:

IEnumerable<string> countries = document
.Descendants("country")
.Select(element => element.Attribute("value").Value);

要获取“美国”国家/地区内的所有州:

IEnumerable<string> states = document
.Descendants("country")
.Where(element => element.Attribute("value").Value == "USA")
.Elements("state")
.Select(element => element.Attribute("value").Value);

要获取美国/加利福尼亚州境内的所有城市:

IEnumerable<string> cities = document
.Descendants("country")
.Where(element => element.Attribute("value").Value == "USA")
.Elements("state")
.Where(element => element.Attribute("value").Value == "California")
.Elements("city")
.Select(element => element.Value);

您可能还想查看 XPath 查询(您需要使用 System.XML.XPath):

IEnumerable<string> cities = document
.XPathSelectElements("/demographics/country[@value='USA']/state[@value='California']/city")
.Select(element => element.Value);

关于c#-3.0 - Linq to XML 文档遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2710580/

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