如何将问题从XML文件添加到列表类型

时间:2020-06-30 14:20:58

标签: c# xml linq

嗨,我想尝试将xml文件中的属性添加到列表数据结构中。但是我没有想法如何做...我试图创建一个类,但是我不知道如何在列表中实现我的查询。这是我的代码:

{
user_id:1;
item_count:2;
grand_total:20;
}

xml文件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Xml.Linq;

namespace Lista
{
        class Program
        {
                List<QuestionList> test = new List<QuestionList>();
                static void Main(string[] args)
                {
                        var xml = XDocument.Load("questions.xml");
                        var query = from index in xml.Descendants("question")
                                    where (string)index.Attribute("TypeQuestion") == "eazy"
                                    select index;

                        foreach(var x in query)
                        {
                                Console.WriteLine($"{x}");
                        }
                }
                class QuestionList
                {
                        public string QuestionName;
                        public string answers;
                        public string rightIndex;
                        public string TypeQuestion;

                }
        }
}

如果我尝试:

<QuestionsList>
            <question>
                <name>Question 1</name>
                <answers>a1,a2,a3,a4</answers>
                <rightIndex>3</rightIndex>
                <TypeQuestion>eazy</TypeQuestion>
            </question>
            <question>
                <name>Question 2</name>
                <answers>a1,a2,a3,a4</answers>
                <rightIndex>3,4</rightIndex>
                <TypeQuestion>eazy</TypeQuestion>
            </question>
            <question>
                <name>Question 3</name>
                <answers>a1,a2,a3,a4</answers>
                <rightIndex>1</rightIndex>
                <TypeQuestion>eazy</TypeQuestion>
            </question>
            <question>
                <name>Question 4</name>
                <answers>a1,a2,a3,a4</answers>
                <rightIndex>2</rightIndex>
                <TypeQuestion>mediu</TypeQuestion>
            </question>
            <question>
                <name>Question 5</name>
                <answers>a1,a2,a3,a4</answers>
                <rightIndex>2,4</rightIndex>
                <TypeQuestion>mediu</TypeQuestion>
            </question>
            <question>
                <name>Question 6</name>
                <answers>a1,a2,a3,a4,a5</answers>
                <rightIndex>5</rightIndex>
                <TypeQuestion>mediu</TypeQuestion>
            </question>
            <question>
                <name>Question 7</name>
                <answers>a1,a2</answers>
                <rightIndex>1</rightIndex>
                <TypeQuestion>mediu</TypeQuestion>
            </question>
        </QuestionsList>

我得到了内容,但是如果我尝试选择所有问题,TypeQuestion的“ eazy”如何不起作用。

1 个答案:

答案 0 :(得分:0)

<TypeQuestion>是元素而不是属性:

var query = from index in xml.Descendants("question")
            where (string)index.Element("TypeQuestion") == "eazy"
            select index;

要从XElement中获得问题的名称,它就是x.Element("name").Value