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

时间:2013-11-26 11:17:13

标签: c# xml

大家好,我们正在学校开展一个项目,但我很困难,需要你帮忙。

我有一个包含用户数据的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");
            }
         }
     }
}

我非常感谢接受帮助:)

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分: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);
}