C# 解析复杂嵌套的XML
我一直在阅读各种教程,但不知道如何有条件地解析以下XML结构,即用户输入一个州的名称,然后接收国会大厦的名称 当我用下面的代码测试它时,没有弹出MessageBox C代码 Foo.xml 这应该起作用:C# 解析复杂嵌套的XML,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我一直在阅读各种教程,但不知道如何有条件地解析以下XML结构,即用户输入一个州的名称,然后接收国会大厦的名称 当我用下面的代码测试它时,没有弹出MessageBox C代码 Foo.xml 这应该起作用: List<State> states = (from s in XDocument.Load(@"Foo.xml").Descendants("State") select new State { Name = s.Attribute("Name")
List<State> states = (from s in XDocument.Load(@"Foo.xml").Descendants("State")
select new State
{
Name = s.Attribute("Name").Value,
Capital = s.Attribute("Capital").Value
}).ToList();
foreach (State state in states)
{
//do something...
}
//Or get a specific state
var alabama = states.FirstOrDefault(a => a.Name == "Alabama");
这应该起作用:
List<State> states = (from s in XDocument.Load(@"Foo.xml").Descendants("State")
select new State
{
Name = s.Attribute("Name").Value,
Capital = s.Attribute("Capital").Value
}).ToList();
foreach (State state in states)
{
//do something...
}
//Or get a specific state
var alabama = states.FirstOrDefault(a => a.Name == "Alabama");
我对你的代码做了一些修改。这会让你从州里回到国会大厦
var stateCapital = from states in XDocument.Load(@"foo.xml").Descendants("State")
where states.Attribute("Name").Value == "Alabama"
select states.Attribute("Capital").Value;
Messagebox.Show(stateCapital);
如果需要for循环中每个状态的所有大写字母的名称-
var statesCollection = from states in XDocument.Load(@"foo.xml").Descendants("State") select states;
foreach (var state in statesCollection)
{
Messagebox.Show(state.Attribute("Capital").Value);
}
我对你的代码做了一些修改。这会让你从州里回到国会大厦
var stateCapital = from states in XDocument.Load(@"foo.xml").Descendants("State")
where states.Attribute("Name").Value == "Alabama"
select states.Attribute("Capital").Value;
Messagebox.Show(stateCapital);
如果需要for循环中每个状态的所有大写字母的名称-
var statesCollection = from states in XDocument.Load(@"foo.xml").Descendants("State") select states;
foreach (var state in statesCollection)
{
Messagebox.Show(state.Attribute("Capital").Value);
}
您的linq中是否缺少where子句?您的XML中是否只有细分为状态的国家?我生活在一个没有州的小国,互联网上的许多地址输入表格要求提供我无法提供的州。当不同的国家有同名的州时,您希望返回什么?我不知道是否存在两个这样的国家,但在苏联分裂成独立国家之前,格鲁吉亚是苏联的一个国家,所以这是可能的。@Hybridzz:我将我的测试代码编辑为更简单的代码。你的linq中是否缺少where子句?你的XML中是否只包含细分成国家的国家?我生活在一个没有州的小国,互联网上的许多地址输入表格要求提供我无法提供的州。当不同的国家有同名的州时,您希望返回什么?我不知道是否存在两个这样的国家,但在苏联分裂成独立国家之前,格鲁吉亚是苏联的一个国家,所以这是可能的。@Hybridzz:我把我的测试代码编辑成了更简单的代码。