2013-11-26 188 views
0

嗨,大家好,我們正在學校的一個項目,但我卡住了,需要你們幫助。Xml搜索特定節點並添加子節點c#

我有用戶數據的XML文件:

<Bruger> 
    <Spejder> 
    <Navn>Fatih</Navn> 
    <Efternavn>Karaman</Efternavn> 
    <Cpr>2</Cpr> 
    <Cprno>2</Cprno> 
    <Alder>12</Alder> 
    <Kontakt>44</Kontakt> 
    </Spejder> 
    <Spejder> 
    <Navn>Adel</Navn> 
    <Efternavn>Karaman</Efternavn> 
    <Cpr>1</Cpr> 
    <Cprno>2</Cprno> 
    <Alder>12</Alder> 
    <Kontakt>44</Kontakt> 
    </Spejder> 
    <Spejder> 
    <Navn>Max</Navn> 
    <Efternavn>Karaman</Efternavn> 
    <Cpr>3</Cpr> 
    <Cprno>2</Cprno> 
    <Alder>12</Alder> 
    <Kontakt>44</Kontakt> 
    </Spejder> 
</Bruger> 

當一個用戶登錄到應用程序,他們應該能夠參加活動,但是當我編程,並與最後一個用戶登錄,無論它使新的孩子在XML的頂部。

這裏是代碼:

{ 
    XmlDocument document = new XmlDocument(); 
    document.Load(@"Spejder.xml"); 
    { 
     XmlNodeList xnList = document.SelectNodes("Bruger/Spejder"); 
     foreach (XmlNode xn in xnList) 
     { 
      string Navn = xn["Navn"].InnerText; 
      if (label15.Text == Navn) 
      { 
       XmlNode tilmeld = document.CreateElement("tilmeld"); 
       tilmeld.InnerText = "new child"; 
       XmlNode parentNode=document.SelectSingleNode("/Bruger/Spejder"); 
       parentNode.InsertAfter(tilmeld, parentNode.LastChild); 
       document.Save(@"Spejder.xml"); 
      } 
     } 
    } 
} 

我真的很感激傳入幫助:)

+0

'label15.Text == label15.Text'邏輯(和技術),所以它會一直執行大括號中的代碼總是返回true'{}'這將創建一個新的子節點。我想你可能想比較導航與label15.Text – 2013-11-26 11:36:22

+0

哦對不起,這是我的錯誤,它應該是Navn謝謝:) – user2991901

+0

這是否解決您的問題?? 'label15.Text'和'Navn'的值是什麼? – 2013-11-26 11:44:58

回答

0

找到用戶。如果找到,則添加一個子元素。

var user = document.SelectSingleNode("/Bruger/Spejder[Navn/text() = '" + label15.Text + "']") 
if (null != user) 
{ 
    var register = document.CreateElement("tilmeld"); 
    register.InnerText = "new child"; 
    user.AppendChild(register); 
} 
+0

非常感謝這個幫助:) – user2991901

2

string inputName =「Fatih」;

 XDocument doc = XDocument.Load("Spejder.xml"); 

     foreach (var item in doc.Descendants("Spejder")) 
     { 
      var xElement = item.Element("Navn"); 
      if (xElement != null) 
      { 
       string currentName = xElement.Value; 
       if (currentName == inputName) 
       { 

        var newChildelement = new XElement("tilmeld", "new child"); 

        var subs = item.Element("tilmeld"); 

        if (subs != null) 
        { 
         subs.Add(newChildelement); 
        } 
        else 
        { 
         XNode node = new XElement("tilmeld", newChildelement); 
         item.Add(node); 
        } 
       } 
      } 
     } 
     doc.Save("Spejder.xml");