【发布时间】:2014-02-04 16:51:01
【问题描述】:
我正在创建一个应用程序,我想在其中搜索某个节点,并更改该根节点中的值。这就是我的 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>
所以,我有一个文本框,可以在其中输入员工的姓名,例如 Name1。点击按钮后,标签的值发生变化,从 0 变为 1,反之亦然,同时添加登录新节点的时间和日期,包括输入字段中的数据。这个想法是一个输入系统,您可以在其中写下用户的姓名,如果用户进出,同时它会将数据保存为个人日志。
如何在xml中搜索,根据文本框中的文本,找到某个节点后,从enter节点改变值,将当前时间和日期的新节点添加到节点中?
到目前为止,这是我的代码:
XElement root = XElement.Load("data.xml");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("data.xml");
string xPathString = String.Format("/Employees/Employees/name[.=\"{0}\"]", textBox1.Text);
XmlNodeList nodeList = xmlDoc.SelectNodes(xPathString);
foreach (XmlNode node in nodeList)
{
DateTime time = DateTime.Parse("02.04.2014 13:00:00");
XElement data = root.Descendants("data")
.FirstOrDefault(d => (DateTime)d.Attribute("Time") == time &&
(int)d.Attribute("Enter") == 1);
data.Attribute("Time").Value = time.ToString();
data.Attribute("Enter").Value = 0.ToString();
root.Save("data.xml");
}
xmlDoc.Save("data.xml");
我必须使用 XElement 和 XmlDocument 吗?因为 SelectNodes 与 XmlDocument 一起使用,所以不知道任何其他方式。问题是,我怎样才能进入节点等于 textbox.text 的节点?然后将值更改为并添加新的孩子?
【问题讨论】:
-
如果无法选择按钮的放置位置,建议放在文本框右侧
-
我想要的是在xml中搜索,根据文本框中的文本,在
中找到某个节点 中增加了一个新的节点后,从enter节点更改值,然后将具有当前时间和日期的新节点添加到节点中。我写了实例Name1,Enter的值从0变为1,同时在 节点 -
@user2962759 到底是什么给你带来了问题?从 UI 读取值?解析xml?更新xml中的值?显示您的代码
-
我是 xml 新手,真的不知道如何开始,读取和保存 xml 就可以了,获取内部文本应该类似于 string xPathString = String.Format(" /Employees/Employee/Name[.=\"{0}\"]]", texbox1.Text);所以我感谢任何帮助
-
之后,如何找到Enter节点,并将其更改为innerText,然后将其保存到
中的新节点中