gpt4 book ai didi

c# - 按值查找 Xml 属性,并更改其其他值

转载 作者:行者123 更新时间:2023-11-30 22:25:28 28 4
gpt4 key购买 nike

所以,下面我编写了一个代码,在加载时按名称(Selena 和 Maria)列出了 comboBox1 中的 2 个项目,当我选择其中一个时,假设是 Maria,然后单击 button1,它会填充我的 3 个文本框使用 Maria 的 name、usn 和 pawd 属性值,它看起来像:显示名称:玛丽亚用户名:mary26密码:d4e5r

我对那部分代码很满意,因为它符合我的目的。

但我正在努力处理我试图弄清楚的部分代码。我创建了一个按钮 2,我希望这样,当我更改显示名称、用户名或密码文本框的值并单击保存时,它会保存到 xml 文件中的正确位置,保存到 Maria,并且不会保存到 Selena 或别的东西。

我已经尝试浏览了一个星期,并尝试了多种解决方案,但我找不到任何一个。

att.xml:

<database>
<item name="Selena" usn="sele22" pawd="fed47a"></item>
<item name="Maria" usn="mary26" pawd="d4e5r"></item>
<database>

我的项目:

private void Form3_Load(object sender, EventArgs e)
{
comboBox1.Items.Clear();
XmlTextReader reader = new XmlTextReader("att.xml");
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "item")
{
comboBox1.Items.Add(reader.GetAttribute("name"));
}
}
}

reader.Close();
}

private void button1_Click(object sender, EventArgs e)
{
string secit = comboBox1.SelectedItem as string;
XmlTextReader lola = new XmlTextReader("att.xml");
while (lola.Read())
{
if (lola.NodeType == XmlNodeType.Element)
{
string poop = lola.GetAttribute("name");
if (poop == secit)
{
string username = lola.GetAttribute("usn");
string password = lola.GetAttribute("pawd");
string dispname = lola.GetAttribute("name");

textBox1.Text = dispname;
textBox2.Text = username;
textBox3.Text = password;

}
}
}

lola.Close();
}

最佳答案

您可以像这样使用 XmlDocument:

XmlDocument doc = new XmlDocument();
doc.Load("att.xml");
foreach(XmlNode item in doc.SelectNodes("//item"))
comboBox1.Items.Add(item.Attributes["name"].Value);


void button3_Click(object sender, NotifyArgs e)
{
XmlNode item = doc.SelectSingleNode("//item[@name='" + comboBox1.Text + "']");
if (item == null) return;
item.Attributes["name"].Value = textBox1.Text;
...
doc.Save("att.xml");
}

关于c# - 按值查找 Xml 属性,并更改其其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271066/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com