好的,所以这是非常基本的,但我现在开始学习如何阅读XML文档,我通常会在这里找到比在线指南更全面的答案。本质上我正在编写一个口袋妖怪游戏,它使用一个XML文件来加载所有的统计数据(我从其他人那里刷过它)。用户将输入一个神奇宝贝,然后我想从中读取神奇宝贝的基本统计数据。 XML文件,为了给出一个模板,这将是一个口袋妖怪:
<Pokemon>
<Name>Bulbasaur</Name>
<BaseStats>
<Health>5</Health>
<Attack>5</Attack>
<Defense>5</Defense>
<SpecialAttack>7</SpecialAttack>
<SpecialDefense>7</SpecialDefense>
<Speed>5</Speed>
</BaseStats>
</Pokemon>
我尝试使用的代码是:
XDocument pokemonDoc = XDocument.Load(@"File Path Here");
while(pokemonDoc.Descendants("Pokemon").Elements("Name").ToString() == cbSpecies.SelectedText)
{
var Stats = pokemonDoc.Descendants("Pokemon").Elements("BaseStats");
}
但是这只是将pokemonDoc返回为null,任何想法我哪里出错?
注意:
cbSpeciesSelect是用户选择他们想要哪种口袋妖怪的地方。
文件路径绝对有效,因为我已在程序中使用它
while循环永远不会真正开始
答案 0 :(得分:1)
您可以尝试下面的代码:
foreach(var e in pokemonDoc.Descendants("Pokemon").Elements("Name"))
{
if(e.Value==cbSpecies.SelectedText)
{
var Stats = pokemonDoc.Descendants("Pokemon").Elements("BaseStats");
}
}
答案 1 :(得分:1)
试试xml linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var pokemon = doc.Descendants("Pokemon").Select(x => new {
name = (string)x.Element("Name"),
health = (int)x.Element("BaseStats").Element("Health"),
attack = (int)x.Element("BaseStats").Element("Attack"),
defense = (int)x.Element("BaseStats").Element("Defense"),
specialAttack = (int)x.Element("BaseStats").Element("SpecialAttack"),
specialDefense = (int)x.Element("BaseStats").Element("SpecialDefense"),
speed = (int)x.Element("BaseStats").Element("Speed"),
}).FirstOrDefault();
}
}
}