我是XML的新手,我需要解析.XML页面的这一部分:
<TEAMDATA>
<Team TriCode="BOU" ShortName="Bournemouth" LongName="AFC Bournemouth" OfficialName="AFC Bournemouth" ID="t91" Manager="Manager" Venue="Vitality Stadium"/>
<Team TriCode="ARS" ShortName="Arsenal" LongName="Arsenal" OfficialName="Arsenal" ID="t3" Manager="Manager" Venue="Emirates Stadium"/>
<Team TriCode="AVL" ShortName="Aston Villa" LongName="Aston Villa" OfficialName="Aston Villa" ID="t7" Manager="Caretaker Manager" Venue="Villa Park"/>
<Team TriCode="BUR" ShortName="Burnley" LongName="Burnley" OfficialName="Burnley" ID="t90" Manager="Manager" Venue="Turf Moor"/>
我的想法是打印每个团队的tricode,shortname和logname,例如:
BOU Bournemouth AFC Bournemouth
ARS Arsenal AFC Bournemouth
...
这是我的代码:
static void Main(string[] args)
{
string strURL = "http://MyURL.xml";
XDocument xDoc;
string title = "";
xDoc = XDocument.Load(strURL);
var TeamID = from r in xDoc.Descendants("TEAMDATA")
select new
{
TriCode = r.Attribute("TriCode").Value,
ShortName = r.Element("ShortName").Value,
LongName = r.Element("LongName").Value,
};
foreach (var r in TeamID)
{
Console.WriteLine(r.TriCode + r.ShortName + r.LongName);
}
}
直到现在我收到了
NullReferenceException异常
选择新子句之后。我需要解析这些行?
答案 0 :(得分:1)
这应该有效
from r in xDoc.Descendants("Team")
select new
{
TriCode = r.Attribute("TriCode").Value,
ShortName = r.Attribute("ShortName").Value,
LongName = r.Attribute("LongName").Value,
};
您的代码有什么问题?
xDoc.Descendants("TEAMDATA")
会返回元素名称为TEAMDATA
的所有后代,并且该元素没有您要查找的任何属性。
r.Element("ShortName").Value
这一定是个错字。你想要的是属性值,但不是元素本身。