我正在尝试使用XML文件的内容作为对象列表的数据源。该对象如下所示:
public class QuestionData
{
public string QuestionName{get;set;}
public List<string> Answers{get;set;}
}
这是我的XML:
<?xml version="1.0" encoding="utf-8" ?>
<QuestionData>
<Question>
<QuestionName>Question 1</QuestionName>
<Answers>
<string>Answer 1</string>
<string>Answer 2</string>
<string>Answer 3</string>
<string>Answer 4</string>
</Answers>
</Question>
<Question>
<QuestionName>Question 2</QuestionName>
<Answers>
<string>Answer 1</string>
<string>Answer 2</string>
<string>Answer 3</string>
</Answers>
</Question>
</QuestionData>
我用来尝试执行此操作的代码是:
var xml = XDocument.Load ("C:\temp\xmlfile.xml");
List<QuestionData> questionData = xml.Root.Elements("Question").Select
(q => new QuestionData {
QuestionName = q.Element ("QuestionName").Value,
Answers = new List<string> {
q.Element ("Answers").Value }
}).ToList ();
代码编译,但我没有从XML获取任何数据。我通过questionData循环尝试将信息显示到控制台,但它是空的。
答案 0 :(得分:4)
List<QuestionData> questionData =
xml.Root
.Elements("Question")
.Select(q => new QuestionData
{
QuestionName = (string)q.Element("QuestionName"),
Answers = q.Element("Answers")
.Elements("string")
.Select(s => (string)s)
.ToList()
}).ToList();
我使用了(string)XElement
强制转换而不是XElement.Value
属性,因为当元素为NullReferenceException
时,它不会抛出null
。