2012-01-16 43 views
1

我有两个文本框,分别是txtUserid和txtPassowrd。我正在将文本框中输入的值写入xmlfile,但我不希望相同的txtuserid值在xml中写入两次 - 它应该被覆盖;即如果我输入txtUserid = 2和txtPassword = I,第二次如果我输入txtUserid = 2和txtPassword = m,那么我只想在xml中输入一个条目...即txtUserid = 2和textPassword = m将文本框值写入C#中的xml文件.net

是我的代码

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"); 
+4

不要以纯文本形式将密码保存在xml文件中。 – 2012-01-16 16:04:53

+0

目前我不能做代码细节,但最简单的方法是在创建新代码之前删除任何现有的用户节点。 – 2012-01-16 16:06:14

回答

0

搜索现有的XML文档,其中用户ID属性匹配当前的一个,如果确实如此,修改一个节点,否则做一个新的。

我想像你的折轴将类似于以下:

 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); 
+0

如何编写用于修改现有节点的代码??我对C#新增了一个# – user451387 2012-01-16 16:41:30

+0

我们是否需要为此文章添加“作业”标记? – 2012-01-16 17:12:40

0

写作文本值转换为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(); 
}