将文本框值写入C#.net中的xml文件

本文关键字:net 中的 xml 文件 文本 | 更新日期: 2023-09-27 18:20:31

我有两个文本框,即txtUseridtxtPassowrd

我正在将文本框中输入的值写入XML文件,但我不希望相同的txtuserid值在XML中写入两次——它应该被覆盖。

例如:

  • 如果我输入txtUserid=2txtPassword=I
  • 第二次如果我输入txtUserid=2txtPassword=m

那么我只想在XML文件中保留一个条目:

对于上述示例:txtUserid=2textPassword=m

代码:

XDocument Xdoc = new XDocument(new XElement("Users"));
if (System.IO.File.Exists("D:''Users.xml"))
{
   Xdoc = XDocument.Load("D:''Users.xml");
}
else
{
   Xdoc = new XDocument();
}
XElement xml = new XElement("Users",
               new XElement("User",
               new XAttribute("UserId", txtUserName.Text),
               new XAttribute("Password", txtPassword.Text)));
if (Xdoc.Descendants().Count() > 0)
{
   Xdoc.Descendants().First().Add(xml);
}
else
{
   Xdoc.Add(xml);
}
Xdoc.Save("D:''Users.xml");

将文本框值写入C#.net中的xml文件

在现有的XML文档中搜索UserId属性与当前节点匹配的节点,如果匹配,则修改该节点,否则创建一个新节点。

我想你的coude会像下面这样:

        List<XElement> list = Xdoc.Descendants("User").Where(el => el.Attribute("UserId").Value == txtUserName.Text).ToList();
        if (list.Count == 0)
        {
            // Add new node
        }
        else
        {
            // Modify the existing node
        }

编辑:作为对您评论的回应,编辑XElement的代码看起来像

string myValue = "myValue";
list.First().Attribute("ElementName").SetValue(myValue);

在C#中将文本框值写入XML文件

protected void btnSave_Click(object sender, EventArgs e)
{   
    // Open the XML doc  
    System.Xml.XmlDocument myXmlDocument = new System.Xml.XmlDocument();
    myXmlDocument.Load(Server.MapPath("InsertData.xml"));
    System.Xml.XmlNode myXmlNode = myXmlDocument.DocumentElement.FirstChild;
    // Create new XML element and populate its attributes  
    System.Xml.XmlElement myXmlElement = myXmlDocument.CreateElement("entry");
    myXmlElement.SetAttribute("Userid", Server.HtmlEncode(textUserid.Text));
    myXmlElement.SetAttribute("Username", Server.HtmlEncode(textUsername.Text));
    myXmlElement.SetAttribute("AccountNo", Server.HtmlEncode(txtAccountNo.Text));
    myXmlElement.SetAttribute("BillAmount", Server.HtmlEncode(txtBillAmount.Text));

    // Insert data into the XML doc and save  
    myXmlDocument.DocumentElement.InsertBefore(myXmlElement, myXmlNode);
    myXmlDocument.Save(Server.MapPath("InsertData.xml"));
    // Re-bind data since the doc has been added to  
    BindData();

    Response.Write(@"<script language='javascript'>alert('Record inserted Successfully Inside the XML File....')</script>");
    textUserid.Text = "";
    textUsername.Text = "";
    txtAccountNo.Text = "";
    txtBillAmount.Text = "";  
}
void BindData()
{
    XmlTextReader myXmlReader = new XmlTextReader(Server.MapPath("InsertData.xml"));
    myXmlReader.Close();
}