作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的 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/
我是一名优秀的程序员,十分优秀!