2013-11-26 3 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' логически (и технически) всегда возвращает истину, так что всегда будет выполнять код в фигурные скобки' {} ', который создает новый дочерний узел. Я думаю, вы можете сравнить Navn с label15.Text –

+0

ой, извините, что это была моя ошибка, это должно было быть Navn спасибо :) – user2991901

+0

это решает вашу проблему ?? Каковы значения 'label15.Text' и' Navn'? –

ответ

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"); 
Смежные вопросы