简体   繁体   English

Xml搜索特定节点并添加子节点c#

[英]Xml search for a specific node and add child node c#

Hi guys we are working on a project at the school but i am stuck and need you guys help. 嗨,大家好,我们正在学校的一个项目,但我很困难,需要你帮助。

i have an xml file with user data: 我有一个包含用户数据的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>

when one user login to the application they should be able to join activities but when i program it and login with the last user no matter it makes a new child at the top of the xml. 当一个用户登录到应用程序时,他们应该能够加入活动,但是当我对其进行编程并使用最后一个用户登录时,无论它在xml的顶部创建一个新的孩子。

here is the code: 这是代码:

{
    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");
            }
         }
     }
}

I really appreciate for incoming helps :) 我非常感谢接受帮助:)

string inputName = "Fatih"; 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");

find user. 找到用户。 if found then add a child element. 如果找到则添加子元素。

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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM