正在读取xml字符串并填充列表集合
本文关键字:串并 填充 列表 集合 字符串 字符 读取 xml | 更新日期: 2023-09-27 18:28:15
我需要读取xml字符串并将值分配给列表集合。我需要读取问题节点,并将其分配给列表集合变量。类似地,读取答案并将其分配给列表集合变量。目前,"问题和答案"被覆盖,不会遍历到下一个节点。有人能告诉我问题出在哪里吗?
以下是代码
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;
}
}
}
替换:
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);
}
您需要添加到列表中。
当您第一次创建List时,它是空的,因此没有可添加的对象。您正试图将值设置为数组中不存在的字段。
因此:更改以下代码:
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);
}