【问题标题】:Edit XML values in C#在 C# 中编辑 XML 值
【发布时间】:2016-05-11 14:46:29
【问题描述】:

我正在编写一个将其数据存储到 XML 的程序。我被困在从 XML 获取数据到 DataGridView 和编辑 XML 元素值上。我尝试了很多代码,但它不起作用。我究竟做错了什么? 哪个更容易。 Linq 命令或 XMLWriter、XMLReader 方式???? 代码如下:

private void button2_Click(object sender, EventArgs e)
        {
            string sid = textBox1.Text;
            string fname = textBox3.Text;
            string lname = textBox2.Text;
            string address = textBox4.Text;
            string gender = radioButton1.Checked ? "эр" : "эм";

            XmlDocument doc = new XmlDocument();
            doc.Load("student.xml");
            string tempid = doc.SelectSingleNode("root/Student/ID").InnerText;
            if(tempid == sid)
            {
                doc.SelectSingleNode("root/Student/Fname").InnerText = fname;
                doc.SelectSingleNode("root/Student/Lname").InnerText = lname;
                doc.SelectSingleNode("root/Student/Address").InnerText = address;
                doc.SelectSingleNode("root/Student/Gender").InnerText = gender;
            }    

还有 XML:

<?xml version="1.0" encoding="UTF-8"?>

-<root>


-<Student>

<ID>B140030123</ID>

<FName>Kent</FName>

<LName>Wayne</LName>

<Address>Gotham</Address>

<Gender>эр</Gender>

</Student>

</root>     

如何循环请帮助:(

private void button2_Click(object sender, EventArgs e)
        {
            string sid = textBox1.Text;
            string fname = textBox3.Text;
            string lname = textBox2.Text;
            string address = textBox4.Text;
            string gender = radioButton1.Checked ? "эр" : "эм";

            XmlDocument doc = new XmlDocument();
            doc.Load("student.xml");
            XmlNode node = doc.DocumentElement;
            string tempid = doc.SelectSingleNode("root/Student/ID").InnerText;
            foreach (var temp in doc.SelectSingleNode("root/Student/ID"))
            {


                if (tempid == sid)
                {
                    doc.SelectSingleNode("root/Student/FName").InnerText = fname;
                    doc.SelectSingleNode("root/Student/LName").InnerText = lname;
                    doc.SelectSingleNode("root/Student/Address").InnerText = address;
                    doc.SelectSingleNode("root/Student/Gender").InnerText = gender;
                }
            }

            doc.Save("student.xml");         



        }

【问题讨论】:

  • 我假设有一个 doc.Save("student.xml") 命令?

标签: c# xml linq datagridview


【解决方案1】:

修改XmlDocument 对象不会更改xml 文件。完成编辑后,您必须覆盖该文件。

XmlDocument doc = new XmlDocument();
doc.Load("student.xml");
string tempid = doc.SelectSingleNode("root/Student/ID").InnerText;
if(tempid == sid)
{
   doc.SelectSingleNode("root/Student/Fname").InnerText = fname;
   ...etc
}  

doc.Save("student.xml");

【讨论】:

  • 好的。现在它保存值,但如果我有多个 .... 那么它不会保存值。大概不知道修改哪一个???
  • 如果有多个学生元素,您将不得不遍历所有学生元素,但这与问题无关。 Save 将保存您所做的任何更改。
  • 如何循环播放?我试着去寻找。 (请参阅问题编辑)
  • 这是一个非常适合 google 的话题,如果您遇到问题,应该是一个新问题。我会说我更喜欢 XDocumentSystem.Xml.Linq 命名空间中。
【解决方案2】:

拥有您的 XML 结构,您可以使用一种简单的方法:

var dataSet = new DataSet();
dataSet.ReadXml("student.xml");

dataGridView.DataSource = dataSet.Tables["Student"];

就是这样!

您可以编辑DataGridView 中的数据。您可以添加和删除行。

最后将DataSet保存到文件中:

dataSet.WriteXml("student.xml");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多