首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Linq解析嵌套XML属性

用Linq解析嵌套XML属性
EN

Stack Overflow用户
提问于 2017-02-25 03:13:44
回答 1查看 110关注 0票数 0

我对XML并不熟悉,我需要解析.XML页面的这一部分:

代码语言:javascript
复制
<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"/>

我的想法是为每个团队打印三极管、短名称和标识,例如:

代码语言:javascript
复制
BOU Bournemouth AFC Bournemouth
ARS Arsenal AFC Bournemouth
...

这是我的代码:

代码语言:javascript
复制
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新子句之后。我需要什么来解析这些行?

EN

回答 1

Stack Overflow用户

发布于 2017-02-25 03:27:31

这应该能行

代码语言:javascript
复制
 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,这一定是个错误。您需要的是属性值,而不是元素本身。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42451557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档