我需要读取xml字符串并将值分配给list collection。我需要读取问题节点并将其分配给列表集合变量。同样,阅读答案并将其分配给列表集合变量。目前,问题和答案正在被覆盖而不是遍历到下一个节点。有人能告诉我问题是什么吗?
以下是代码
XmlDocument xmlDocument = new XmlDocument();
var fataQuestionnaire = @"<?xml version=""1.0"" encoding=""UTF-16""?>
<FatcaQuestionnaire xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<QuestionAnswers>
<QuestionAnswer>
<Question>What is your source of wealth?</Question>
<Answer>I am italian </Answer>
</QuestionAnswer>
<QuestionAnswer>
<Question>What is your occupation and name of employer?</Question>
<Answer>Bestinvest</Answer>
</QuestionAnswer>
<QuestionAnswer>
<Question>Do you have a business or residence in?</Question>
<Answer>Yes</Answer>
</QuestionAnswer>
<QuestionAnswer>
<Question>How long have you lived outside of Albania</Question>
<Answer>5 years</Answer>
</QuestionAnswer>
<QuestionAnswer>
<Question>Do you return to Albania on a regular basis</Question>
<Answer>Yes</Answer>
<SubQuestionAnswer>
<Question>How frequently?</Question>
<Answer>every year</Answer>
</SubQuestionAnswer>
</QuestionAnswer>
<QuestionAnswer>
<Question>Do you have family in Albania?</Question>
<Answer>Yes</Answer>
<SubQuestionAnswer>
<Question>Family relationship?</Question>
<Answer>My parents lives there</Answer>
</SubQuestionAnswer>
</QuestionAnswer>
<QuestionAnswer>
<Question>Are you connected to the government of Albania?</Question>
<Answer>Yes</Answer>
<SubQuestionAnswer>
<Question>Nature of association</Question>
<Answer>I was an ex minister</Answer>
</SubQuestionAnswer>
</QuestionAnswer>
<QuestionAnswer>
<Question>Do you send or receive money from Albania?</Question>
<Answer>Yes</Answer>
<SubQuestionAnswer>
<Question>How often and why?</Question>
<Answer>Every month for my parents to live with.</Answer>
</SubQuestionAnswer>
</QuestionAnswer>
</QuestionAnswers>
</FatcaQuestionnaire>";
XmlTextReader reader = new XmlTextReader(new StringReader(fataQuestionnaire));
xmlDocument.Load(reader);
XmlElement xmlRoot = xmlDocument.DocumentElement;
if (xmlRoot != null)
{
XmlNodeList xnlNodes = xmlRoot.SelectNodes("/FatcaQuestionnaire/QuestionAnswers/QuestionAnswer");
List<string> questionanswer = new List<string>();
if (xnlNodes != null)
foreach (XmlNode xndNode in xnlNodes)
{
if (xndNode["Question"] != null)
questionanswer[0] = xndNode["Question"].InnerText;
if (xndNode["Answer"] != null)
questionanswer[1] = xndNode["Answer"].InnerText;
if (xndNode["Question"] != null)
questionanswer[2] = xndNode["Question"].InnerText;
if (xndNode["Answer"] != null)
questionanswer[3] = xndNode["Answer"].InnerText;
}
}
}
答案 0 :(得分:0)
替换:
foreach (XmlNode xndNode in xnlNodes)
{
if (xndNode["Question"] != null)
questionanswer[0] = xndNode["Question"].InnerText;
if (xndNode["Answer"] != null)
questionanswer[1] = xndNode["Answer"].InnerText;
if (xndNode["Question"] != null)
questionanswer[2] = xndNode["Question"].InnerText;
if (xndNode["Answer"] != null)
questionanswer[3] = xndNode["Answer"].InnerText;
}
与
foreach (XmlNode xndNode in xnlNodes)
{
if (xndNode["Question"] != null)
questionanswer.Add(xndNode["Question"].InnerText)
if (xndNode["Answer"] != null)
questionanswer.Add(xndNode["Answer"].InnerText);
}
您需要添加到列表中。
答案 1 :(得分:0)
当您第一次创建List时,它是空的,因此没有要添加的对象。您正在尝试将值设置为Array中不存在的字段。
所以: 从这里改变代码:
foreach (XmlNode xndNode in xnlNodes)
{
if (xndNode["Question"] != null)
questionanswer[0] = xndNode["Question"].InnerText;
if (xndNode["Answer"] != null)
questionanswer[1] = xndNode["Answer"].InnerText;
if (xndNode["Question"] != null)
questionanswer[2] = xndNode["Question"].InnerText;
if (xndNode["Answer"] != null)
questionanswer[3] = xndNode["Answer"].InnerText;
}
对此:
foreach (XmlNode xndNode in xnlNodes)
{
if (xndNode["Question"] != null)
questionanswer.Add(xndNode["Question"].InnerText);
if (xndNode["Answer"] != null)
questionanswer.Add(xndNode["Answer"].InnerText);
}