次のxmlがあり、属性を持つノードの値をフェッチしたいと思います。
<quiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="quiz.xsd">
<mchoice>
<question>What is the capital city of Australia?</question>
<answer>Sydney</answer>
<answer correct="yes">Canberra</answer>
<answer>Melbourne</answer>
<answer>Gold Coast</answer>
</mchoice>
<mchoice>
<question>Launceston is the second largest city in which Australian state?</question>
<answer>Victoria</answer>
<answer>New South Wales</answer>
<answer correct="yes">Tasmania</answer>
<answer>Western Australia</answer>
</mchoice>
</quiz>
public class Question
{
public string QuestionText { get; set; }
public List<string> Answers { get; set; }
public string CorrectAnswer { get; set; }
}
次のクエリを試しましたが、CorrectAnswerファイルでnullが発生します
var questions = from docs in _doc.Descendants("mchoice")
let answers = _doc.Elements("answer")
select new Question
{
QuestionText = docs.Element("question").Value,
Answers = docs.Elements("answer").Select(a => a.Value).ToList(),
CorrectAnswer=docs.Elements("answer").Where(x=>x.Attribute("correct").Value=="yes").Select(x=>x)
除外された出力
- QuestionText-オーストラリアの首都はどこですか?
回答リスト
CorrectAnswer-キャンベラ