我有一个现有的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>
我该怎么做?
答案 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