2013-11-26 126 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");