2016-11-20 79 views
1

這是解決刪除節點/組在XML文件中的元素的

以下作品-The代碼,但是,對於那些已經被保存在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
XmlElement el = (XmlElement)doc.SelectSingleNode("/QuestionCollection/Questions/Question[@titulo='"+titulo+"']"); 
if(el != null) { el.ParentNode.RemoveChild(el); } 
+0

「/ QuestionCollection /問題/問題[@titulo ='「+ titulo +」']「??? – LuizaoGT

+0

是的..謝謝隊友! –

+0

我正在嘗試,但它不起作用 – LuizaoGT

1

您不妨考慮使用較新的XML API,爲您提供更清晰的語法:

var titulo = "bvc"; 
XDocument doc = XDocument.Load(your_path); 

var el2remove = doc.XPathSelectElement($"/QuestionCollection/Questions/Question[@Titulo='{titulo}']"); 
el2remove.Remove();