C# 我无法在正确的元素中向XML文件添加节点
当我保存一个新的问题元素时,我需要它位于问题元素内,而问题元素又位于问题集合内,但是我保存新元素的方式在问题之外,以后不会阅读。 XML是如何获得的:(ABA是新元素)C# 我无法在正确的元素中向XML文件添加节点,c#,xml,unity3d,xmldocument,C#,Xml,Unity3d,Xmldocument,当我保存一个新的问题元素时,我需要它位于问题元素内,而问题元素又位于问题集合内,但是我保存新元素的方式在问题之外,以后不会阅读。 XML是如何获得的:(ABA是新元素) 错误:ArgumentException:引用节点不是此节点的子节点。假设您没有在上面的代码中输入错误,我想我知道发生了什么 XML结构将QuestionCollection作为元素,而SelectSingleNode调用具有QuestionsCollection。这将导致qa节点为空 InsertAfter方法中包含将处理空引
错误:ArgumentException:引用节点不是此节点的子节点。假设您没有在上面的代码中输入错误,我想我知道发生了什么 XML结构将QuestionCollection作为元素,而SelectSingleNode调用具有QuestionsCollection。这将导致qa节点为空 InsertAfter方法中包含将处理空引用节点的逻辑。而是将新元素作为根元素的子元素插入列表()
这似乎就是这里正在发生的事情。从SelectSingleNode参数中删除额外的s,您应该会很好。假设您没有在上面的代码中输入错误,我想我知道发生了什么 XML结构将QuestionCollection作为元素,而SelectSingleNode调用具有QuestionsCollection。这将导致qa节点为空 InsertAfter方法中包含将处理空引用节点的逻辑。而是将新元素作为根元素的子元素插入列表()
这似乎就是这里正在发生的事情。从SelectSingleNode参数中删除额外的s,您应该会很好。@Marshall Tigerus是正确的,但还有更多 更改此项:
XmlElement q = doc.CreateElement("Question");
q.InnerText = Question;
XmlNode qa = doc.SelectSingleNode("QuestionCollection/Questions");
XmlNode start = qa.SelectSingleNode("START");
qa.InsertAfter(q,start);
@马歇尔·蒂格罗斯是正确的,但还有更多 更改此项:
XmlElement q = doc.CreateElement("Question");
q.InnerText = Question;
XmlNode qa = doc.SelectSingleNode("QuestionCollection/Questions");
XmlNode start = qa.SelectSingleNode("START");
qa.InsertAfter(q,start);
中断SelectSingleNode部分并确保它选择了正确的节点。我还将注意到,在您的代码中,您在select singe node调用中使用了QuestionsCollection而不是QuestionCollection,这是您的新节点?“ABA”还是“AAA”?因为您的代码试图在“开始”节点之后插入新节点。如果要将其添加到问题节点的末尾,请选择问题节点的SingleNode,然后使用AppendChild。中断SelectSingleNode部分并确保它选择了正确的节点。我还将注意到,在您的代码中,您在select singe node调用中使用了QuestionsCollection而不是QuestionCollection,这是您的新节点?“ABA”还是“AAA”?因为您的代码试图在“开始”节点之后插入新节点。如果要将其添加到“问题”节点的末尾,请选择“问题”节点的“单一节点”,然后使用“附加子节点”。ArgumentException:引用节点不是此节点的子节点。System.Xml.XmlNode.CheckNodeInsertion(System.Xml.XmlNode newChild,System.Xml.XmlNode refChild)ArgumentException:引用节点不是此节点的子节点。System.Xml.XmlNode.CheckNodeInsertion(System.Xml.XmlNode newChild,System.Xml.XmlNode refChild)谢谢,它正在工作,我想添加属性,元素…?
q.SetAttribute(“id”,“123”)代码>和q.AppendChild(doc.CreateElement(“Answer”)代码>元素的值?值只是另一个节点。创建一个文本节点并使用appendChildThank,它正在工作,我想添加属性、元素…?q.SetAttribute(“id”、“123”)代码>和q.AppendChild(doc.CreateElement(“Answer”)代码>元素的值?值只是另一个节点。创建文本节点并使用AppendChild
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 ();
XmlElement q = doc.CreateElement("Question");
q.InnerText = Question;
XmlNode qa = doc.SelectSingleNode("QuestionCollection/Questions");
XmlNode start = qa.SelectSingleNode("START");
qa.InsertAfter(q,start);