C# 用C语言解析XML文档#

C# 用C语言解析XML文档#,c#,xml,C#,Xml,我正在编写一个C#代码来解析以下XML文档: 皇家马德里 克里斯蒂亚诺 罗纳尔多 7. 加雷斯 包 11 托尼 克罗斯 8. 卢卡 莫德里奇 19 塞尔焦 拉莫斯 4. 拉斐尔 瓦拉内 2. 凯勒 纳瓦斯 1. 巴塞罗那 莱昂内尔 梅西 10 内马尔 年少者。 11 伊凡 拉基蒂奇 4. 安德烈斯 伊涅斯塔 8. 杰拉德 恼怒 3. 哈维尔 马斯切拉诺 14 安德烈 特尔施特根 1. 利物浦 丹尼尔 斯图里奇 15 罗伯托 菲尔米诺 11 菲利普 库蒂尼奥 10 亚当 拉利亚纳 20 乔尔

我正在编写一个C#代码来解析以下XML文档:


皇家马德里
克里斯蒂亚诺
罗纳尔多
7.
加雷斯
包
11
托尼
克罗斯
8.
卢卡
莫德里奇
19
塞尔焦
拉莫斯
4.
拉斐尔
瓦拉内
2.
凯勒
纳瓦斯
1.
巴塞罗那
莱昂内尔
梅西
10
内马尔
年少者。
11
伊凡
拉基蒂奇
4.
安德烈斯
伊涅斯塔
8.
杰拉德
恼怒
3.
哈维尔
马斯切拉诺
14
安德烈
特尔施特根
1.
利物浦
丹尼尔
斯图里奇
15
罗伯托
菲尔米诺
11
菲利普
库蒂尼奥
10
亚当
拉利亚纳
20
乔尔
马蒂普
32
德扬
洛夫伦
6.
西蒙
米尼奥莱
22

正如我在评论中所提到的,您没有在声明中选择
播放器
元素。请尝试以下操作:

var realTeam = from db in xelement.Elements("team")
               where (string)db.Element("name")=="RealMadrid"
               select db.Elements("players");
//Console.WriteLine("Real Madrid");
if (realTeam.Count() != 1)
{
    //more than 1 team called RealMadrid was found, handle this case here
    return;
}
foreach (var e in realTeam.Single())
{
    Console.WriteLine("First Name: " + e.Element("firstname").Value);  //or e.Element("firstname").ToString()
    Console.WriteLine("Last Name: " + e.Element("lastname").Value);
}
这样做:

  var xmlContent = "YOUR XML";
  var xmlDoc = XDocument.Parse(xmlContent);
  var realTeamName = "RealMadrid";

  var realTeam = from team in xmlDoc.Elements("teams")
                                    .Descendants("team")
                 where team.Element("name").Value == realTeamName
                 select team;

  var players = realTeam.Elements("players").Elements(); // get players
  foreach (var player in players)                        // iterate over players
  {
    Console.WriteLine("First name: " + player.Element("firstname").Value);
    Console.WriteLine("Last name: " + player.Element("lastname").Value);
  }

到目前为止,您已经拥有了团队,但现在您需要进入团队元素以获得玩家列表,然后是名为firstname、lastname的单个玩家……

您正在选择
name
元素。尝试
选择数据库元素(“播放器”)而不是
选择数据库
然后遍历播放器,每个元素的类型都应该是
player
,它有lastname和firstname。@KeyurPATEL我尝试了你的解决方案,但在控制台中只得到以下消息:System.Xml.Linq.XContainer+d_u40; roynasr请将@feal answers标记为已接受。如果他的解决方案对你有效。谢谢你的帮助,但是我复制粘贴了你的代码并用它替换了我的代码,我在“e.Element”上出现了以下错误在Console.WriteLine语句中:“IEnumerable”不包含“Element”的定义,并且找不到接受第一个“IEnumerable”类型参数的扩展方法“Element”。啊,我想我缺少了一个
.Elements()
,请参阅编辑。(feal的回答很有帮助)这个解决方案仍然不能解决realTeam.Elements()上的另一个错误:PI意识到为什么可能有多个名为“皇家马德里”的球队。我将编辑我的代码。当我执行此代码时,我在“var xmlDoc=XDocument.Parse(xmlContent);”上得到以下异常:“System.Xml.XmlException:'根级别的数据无效。第1行,位置1.”“您是否用真实的xmlContent填充了变量xmlContent?因为在这个例子中,xmlContent变量包含“yourXML”,这当然是无效的;当我的xml文件名为:XMLFile1.xmlOk时,出现了一个错误:您需要首先加载filecontent:因此使用var xmlContent=System.IO.file.ReadAllText(“…\\\\XMLFile1.xml”);尝试
XmlDocument doc=newxmldocument();doc.Load(“文件路径”);字符串xmlContent=doc.InnerXml