修改XML文件中的现有元素

时间:2014-02-24 15:20:34

标签: c# linq

我有一个现有的XML文件

 <Customer>
  <PrivateCustomer>
    <Adresse>USA</Adresse>
    <Phone>12345678</Phone>
    <Name>John</Name>
    <Age>20</Age>
    <Sex>Man</Sex>
    <Contract> <Contract/>
  </PrivateCustomer>
  <PrivateCustomer>
    <Adresse>Canada</Adresse>
    <Phone>12345678</Phone>
    <Name>Peter</Name>
    <Age>20</Age>
    <Sex>Woman</Sex>
    <Contract> <Contract/>
  </PrivateCustomer>
 <Customer>

在我的C#GUI中,我可以从ComboBox中的xml文件中选择名称。 我想修改我的XML文件,我可以在其中更改名称元素=“John”的“Contract”元素的内容。

实施例

<Customer>
      <PrivateCustomer>
        <Adresse>USA</Adresse>
        <Phone>12345678</Phone>
        <Name>John</Name>
        <Age>20</Age>
        <Sex>Man</Sex>
        <Contract>Sold<Contract/>
      </PrivateCustomer>
      <PrivateCustomer>
        <Adresse>Canada</Adresse>
        <Phone>12345678</Phone>
        <Name>Peter</Name>
        <Age>20</Age>
        <Sex>Woman</Sex>
        <Contract> <Contract/>
      </PrivateCustomer>
     <Customer>

我该怎么做?

2 个答案:

答案 0 :(得分:1)

尝试Modify XML existing content in C#,接受的答案有一个示例,您可以搜索元素并更改其值。

XmlDocument doc = new XmlDocument();
doc.Load("D:\\build.xml");
XmlNode root = doc.DocumentElement;
XmlNode myNode = root.SelectSingleNode("descendant::books");
myNode.Value = "blabla";
doc.Save("D:\\build.xml");

答案 1 :(得分:0)

要修改现有元素,请首先获取所选名称,例如在SelectedIndexChanged事件ComboBox中使用LINQ to XML:

var selectedName = comboBox1.SelectedItem.ToString();
var xDoc = XDocument.Load("path");
var cust = xDoc.Descendants("PrivateCustomer")
           .FirstOrDefault(x => (string)x.Element("Name") == selectedName);

if(cust != null)
{
   // edit Customer
   cust.Element("Contract").Value = "some value..";
}
xDoc.Save("path");  // save the xml file