C# 搜索xml,更改特定节点中的值,在C中添加新节点#

C# 搜索xml,更改特定节点中的值,在C中添加新节点#,c#,xml,search,C#,Xml,Search,我正在创建一个应用程序,希望在其中搜索某个节点,并更改该根节点中的值。我的xml是这样的: <Employees> <Employee> <name>Name1</name> <Enter>0</Enter> <log> <data Time="02.04.2014 13:00:00" Enter="1" /> <data Time="02.

我正在创建一个应用程序,希望在其中搜索某个节点,并更改该根节点中的值。我的xml是这样的:

<Employees>
  <Employee> 
    <name>Name1</name>
    <Enter>0</Enter>
    <log>
      <data Time="02.04.2014 13:00:00" Enter="1" />
      <data Time="02.04.2014 15:00:00" Enter="0" />
    </log>
  </Employee>
  <Employee> 
    <name>Name2</name>
    <Enter>1</Enter>
    <log>
      <data Time="02.04.2014 11:00:00" Enter="1" />
      <data Time="02.04.2014 12:00:00" Enter="0" />
      <data Time="02.04.2014 13:00:00" Enter="1" />
    </log>
  </Employee>
</Employees>

我必须使用XElement和XmlDocument吗?因为SelectNodes与XmlDocument一起使用,所以不知道其他方法。问题是,如何进入node等于textbox.text的节点?然后将值更改为并在中添加新的子节点?

如果使节点更易于使用,则搜索数据将更容易。我建议如下:

<data Time="02.04.2014 13:00:00" Enter="1" />
要更改值,请执行以下操作:

data.Attribute("Time").Value = time.ToString();
data.Attribute("Enter").Value = 0.ToString();
然后使用以下命令保存更改:

root.Save(file);

关于如何使用XAttributes为属性创建Xelement有很多工作,请务必使用任何搜索引擎进行查找。

如果您无法选择按钮的放置位置,我建议将其放置在textbox的右侧。我希望根据textbox中的文本在xml中搜索,然后在,更改“输入”节点中的值,并将具有当前时间和日期的新节点添加到节点中。我编写实例Name1,Enter的值从0更改为1,同时在node@user2962759到底是什么给你带来了问题?从UI读取值?解析xml?更新xml中的值?显示您的代码我是xml新手,我真的不知道如何开始,读取和保存xml是可以的,获取内部文本应该类似于字符串xPathString=string.Format(“/Employees/Employee/Name[.=\”{0}\“]],texbox1.text);因此,我非常感谢您的帮助在此之后,我如何才能找到Enter节点,并更改其innerText,然后将其保存到新节点中,这很好,现在,我如何才能搜索进入在文本框中输入名称的节点?然后更改中的值并添加新节点?XElement root=XElement.Load(“data.xml”);XmlDocument xmlDoc=新的XmlDocument();Load(“data.xml”);字符串xPathString=string.Format(“/Employees/Employee/Name[.=\“{0}\”],textBox1.Text);XmlNodeList nodeList=xmlDoc.SelectNodes(xPathString);foreach(nodeList中的XmlNode节点){}我必须使用XElement和XmlDocument吗,因为SelectNodes在XmlDocument中使用?是这样吗?问题是,如何进入node等于textbox.text的节点?然后将值更改为并在?@user2962759中添加新的子项。您需要进一步研究如何使用Linq to xml。您拥有的XPath表达式还可以,但是通常有更好的方法使用Linq到xml。如果必须,可以将XPath与Linq结合使用到xml,包括
data.Attribute("Time").Value = time.ToString();
data.Attribute("Enter").Value = 0.ToString();
root.Save(file);