解决问题
- 下面的代码有效,但是对于已经保存在XML文件中的问题不起作用,仅适用于在执行应用程序期间保存的那些.-
问题是没有发送标题字符串。
TitleTxtD.onClick.AddListener(delegate(){ Instance.DeleteXML(strTitle); });
我需要创建一个从XML文件中删除节点的函数。我尝试了一个代码(下面),但它不起作用,任何想法如何帮助我?我需要进入XML文件来查找和删除带有所需标题的问题,我不知道它是否是自动的,但我需要一起删除问题中的元素。
public void DeleteXML(string titulo){
XmlDocument doc = new XmlDocument ();
doc.Load ("Assets/Resources/Questions.xml");
XmlNode qa = doc.SelectSingleNode ("QuestionCollection/Questions");
XmlNode q = qa.SelectSingleNode ("Question[@titulo='"+titulo+"']");
q.ParentNode.RemoveChild(q);
doc.Save ("Assets/Resources/Questions.xml");
//XmlNode root = doc.DocumentElement;
Instance.LoadXML ();
}
** LoadXML函数只会更新屏幕上的元素。
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<QuestionCollection>
<Questions>
<Start>
</Start>
<Question Titulo="bvc">
<Enunciado>xcv</Enunciado>
<Resposta1>xcv</Resposta1>
<Resposta2>xcv</Resposta2>
<Resposta3>xcv</Resposta3>
<Resposta4>vxcv</Resposta4>
<RespostaC>xcv</RespostaC>
</Question>
</Questions>
</QuestionCollection>
答案 0 :(得分:1)
您还可以考虑使用更新的XML API,为您提供更清晰的语法:
var titulo = "bvc";
XDocument doc = XDocument.Load(your_path);
var el2remove = doc.XPathSelectElement($"/QuestionCollection/Questions/Question[@Titulo='{titulo}']");
el2remove.Remove();
答案 1 :(得分:0)
XmlElement el = (XmlElement)doc.SelectSingleNode("/QuestionCollection/Questions/Question[@titulo='"+titulo+"']");
if(el != null) { el.ParentNode.RemoveChild(el); }