1

XML 要素をタイプ Books のリストにインポートしようとして、現在問題が発生しています。このコードで「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

mybook.Title = p.Element("title").Value;

XML 要素を不適切に参照していますか、それとも他の単純な問題ですか? 私は無限の解決策とトピックを何時間もグーグル検索しましたが、この最後のハードルを乗り越えることはできません.

簡単にするために、1 つのファイル内のコードを次に示します。

class Program
{
    static void Main(string[] args)
    {
        string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        FileInfo fi = new FileInfo(Path.Combine(appPath, "Books.xml"));

        Console.WriteLine(GetBooks());
    }

    public class Books
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public decimal Price { get; set; }
        public DateTime PublishDate { get; set; }
        public string Description { get; set; }
    }

    public static List<Books> GetBooks()
    {
        XDocument doc = LinqToXml.XmlHelper.GetPlantDocument();
        var xmlBooks = doc.Descendants("catalog");
        List<Books> someBooks = new List<Books>();

        foreach (var p in xmlBooks)
        {
            Books mybook = new Books();
            mybook.Title = p.Element("title").Value;
            someBooks.Add(mybook);
        }
        return someBooks;
    }
}

XML ファイルの内容は次のとおりです。

http://pastebin.com/ZVmWqRT1

これは実際には宿題のプロジェクトであることに注意してください。私は巨大なヒントか2つであるため、必ずしも直接的な答えを探しているわけではありません.

4

1 に答える 1

1
XElement doc=XElement.Load("c:\\hello.xml");

List<Books> lstBooks=doc.Elements("book").Select(x=>
new Books
{
        ID=x.Attribute("id").Value,
        Name=x.Element("author").Value,
        Title =x.Element("title").Value,
        Price =decimal.Parse(x.Element("price").Value),
        PublishDate =Convert.ToDateTime(x.Element("publish_date").Value),
        Description=x.Element("description").Value
}
).ToList(); 

//lstBooks now contain all the books
foreach(Books b in lstBooks)
{
         b.ID;
         b.Name;...........
}
于 2012-10-06T03:19:40.133 に答える