【发布时间】:2016-11-14 15:02:03
【问题描述】:
当我保存一个新的 Question 元素时,我需要将它放在 questions 元素内,而该元素又在 QuestionCollection 内,但我保存新元素的方式在问题之外,以后不会阅读。 XML 是如何获得的:(ABA 是新元素)
<?xml version="1.0" encoding="UTF-8"?>
<QuestionCollection>
<Question Titulo="ABA">
<Enunciado>ABB</Enunciado>
<Resposta1>ABC</Resposta1>
<Resposta2>ABD</Resposta2>
<Resposta3>ABE</Resposta3>
<Resposta4>ABF</Resposta4>
<RespostaC>ABC</RespostaC>
</Question>
<Questions>
<START>
</START>
<Question Titulo="AAA">
<Enunciado>AAB</Enunciado>
<Resposta1>AAC</Resposta1>
<Resposta2>AAD</Resposta2>
<Resposta3>AAE</Resposta3>
<Resposta4>AAF</Resposta4>
<RespostaC>AAF</RespostaC>
</Question>
</Questions>
</QuestionCollection>
我应该如何留下:
<?xml version="1.0" encoding="UTF-8"?>
<QuestionCollection>
<Questions>
<START>
</START>
<Question Titulo="AAA">
<Enunciado>AAB</Enunciado>
<Resposta1>AAC</Resposta1>
<Resposta2>AAD</Resposta2>
<Resposta3>AAE</Resposta3>
<Resposta4>AAF</Resposta4>
<RespostaC>AAF</RespostaC>
</Question>
<Question Titulo="ABA">
<Enunciado>ABB</Enunciado>
<Resposta1>ABC</Resposta1>
<Resposta2>ABD</Resposta2>
<Resposta3>ABE</Resposta3>
<Resposta4>ABF</Resposta4>
<RespostaC>ABC</RespostaC>
</Question>
</Questions>
</QuestionCollection>
部分代码
XmlDocument doc = new XmlDocument ();
doc.Load ("Assets/Resources/Questions.xml");
XmlNode root = doc.DocumentElement;
XmlElement q = doc.CreateElement ("Question");
q.InnerText = Question;
XmlNode qa = doc.SelectSingleNode ("QuestionCollection/Questions/START");
root.InsertAfter(q,qa);
doc.Save ("Assets/Resources/Questions.xml");
Instance.CloseWindow ();
错误:ArgumentException:引用节点不是该节点的子节点。
【问题讨论】:
-
对 SelectSingleNode 部分进行断点并确保它选择了正确的节点。另外我会注意到,在您的代码中,选择单节点调用中有 QuestionsCollection 而不是 QuestionCollection
-
你的新节点是哪个? “ABA”还是“AAA”?因为您的代码试图在“START”节点之后插入新节点。如果您希望它添加到 Questions 节点的末尾,
SelectSingleNodeQuestions 节点,并使用AppendChild。
标签: c# xml unity3d xmldocument