使用Linq读取XML文件

时间:2015-12-06 09:46:28

标签: c# xml linq

我尝试使用Linq读取XML文件。这是我的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqToXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XDocument xdoc = XDocument.Load(@"E:\\XML\\test.xml");
            xdoc.Descendants("Title").Select(t => new
            {
            fontType = t.Attribute("fontType").Value,
            fontSize = t.Attribute("fontSize").Value,
            fontColor = t.Attribute("fontColor").Value,
            Underline = t.Attribute("Underline").Value,
            Bold = t.Attribute("Bold").Value,
            Italic = t.Attribute("Italic").Value,
        }).ToList().ForEach(t =>
        {
            Console.WriteLine("fontType : " + t.fontType);
            Console.WriteLine("fontSize : " + t.fontSize);
            Console.WriteLine("fontColor : " + t.fontColor);
            Console.WriteLine("Underline : " + t.Underline);
            Console.WriteLine("Bold : " + t.Bold);
            Console.WriteLine("Italic : " + t.Italic);
        });

        Console.ReadLine();

       }
     }
  }

它给出了以下异常

  

未处理的类型' System.NullReferenceException'   发生在programm.exe

但我无法找到错误。任何人都可以帮助我..

这是我用过的XML文件..

   <Styles>
   <Title>
    <fontType>TimesNewRoman</fontType>
    <fontSize>20</fontSize>
    <fontColor>black</fontColor>
    <Underline>No</Underline>
    <Bold>bold</Bold>
    <Italic>No</Italic>
  </Title>
  <Title>
    <fontType>TimesNewRoman</fontType>
    <fontSize>20</fontSize>
    <fontColor>black</fontColor>
    <Underline>No</Underline>
    <Bold>bold</Bold>
    <Italic>italic</Italic>
  </Title>
</Styles>

1 个答案:

答案 0 :(得分:1)

fontType元素上没有任何fontSizeTitle等属性。 fontTypefontSize是元素,因此您应该使用

fontType = t.Element("fontType").Value