我对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"/>
我的想法是为每个团队打印三极管、短名称和标识,例如:
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异常
在select新子句之后。我需要什么来解析这些行?
发布于 2017-02-25 03:27:31
这应该能行
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,这一定是个错误。您需要的是属性值,而不是元素本身。
https://stackoverflow.com/questions/42451557
复制相似问题