2014-10-28 96 views
-1

我有這個代碼來加載xml文件,我不知道它是否完整。這是我的代碼。C#編輯XML,我完全丟失

public void updateXML(string xmlFile, string chooseNode, string chooseSingleNode, string newNode, string selectedCategory) 
{ 
    XmlDocument xml = new XmlDocument(); 
    xml.Load(xmlFile); 

    foreach (XmlElement element in xml.SelectNodes(chooseNode)) 
    { 
     foreach (XmlElement element1 in element) 
     { 
      if (element.SelectSingleNode(chooseNode).InnerText == selectedCategory) 
      { 

       XmlNode newvalue = xml.CreateElement(newNode); 
       newvalue.InnerText = "MODIFIED"; 
       element.ReplaceChild(newvalue, element1); 

       xml.Save(xmlFile); 
      } 
     } 
    } 

下面是我在最後使用的方法,其中我設置了xmlfile等。 (該如updateXML方法是在「data.cs」,這是從資料庫呼籲。

public void editCategory(string newNode) 
{ 
    string xmlFile = "Category.xml"; 
    string chooseNodes = "ArrayOfCategory/Category"; 
    string chooseSingleNode = "//Name"; 
    string selectedCategory = "News"; 

    repository.Update(xmlFile, chooseNodes, newNode, chooseSingleNode, selectedCategory); 
} 

我不確定要放什麼東西在有多種不同的節點等,上面我的代碼發現這裏#2。 - 下面是我XMLFILE,我想編輯

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Category> 
     <Id>6b30511d-2cd1-4325-ad73-7b905f76ffc0</Id> 
     <Name>News</Name> 
    </Category> 
    <Category> 
     <Id>516401f4-b45c-46ef-b8f4-9d05021ae794</Id> 
     <Name>Pods</Name> 
    </Category> 
    <Category> 
     <Id>0c9cd216-86cf-4a62-884c-1b428150ebac</Id> 
     <Name>Pods</Name> 
    </Category> 
</ArrayOfCategory> 

我會很感激你的幫助

+3

那麼,什麼是你的問題?你不應該保存你的XML文件在foreach中,只需將它保存在最後 – Koen 2014-10-28 13:57:53

+0

好吧,它不工作..我在做某種方式寫錯誤的引用,例如//名稱等。我試圖解決它,但它總是卡在if語句中。 – DangerCoder 2014-10-28 14:00:09

+0

沒有明確問題陳述的問題對這裏的未來讀者沒有任何價值。請編輯您的問題,以清楚說明您使用上述代碼遇到的問題,並提出可以回答的具體問題。 (不要在評論中包含它 - 將你的問題包含在那裏)。 – 2014-10-28 15:36:38

回答

0
if (element.SelectSingleNode(chooseNode).InnerText == selectedCategory) 

ChooseNode =。 「ArrayOfCategory /類別」

selectedCategory = "News"; 

所以chooseNode的innerText屬性將永遠是「新聞」,因爲「新聞」是在<Name>

0

有什麼東西錯在你的第二個foreach:你忘了把element.SelectNodes或者其他的東西 ?

接下來的事情:你可以直接修改一個XmlElement,不需要創建一個新的。只有在不存在的情況下才創建(並添加它)。

我強烈建議您查看XmlDocument的MSDN文檔,更具體地看看SelectNodes演示文稿後面的CreateElementthis simple example

而且,你可能要考慮把一個@在你的字符串的前面: 看到What's the @ in front of a string in C#?