【问题标题】:Modify existing Element in XMLfile修改 XMLfile 中的现有元素
【发布时间】:2014-02-24 15:20:33
【问题描述】:

我有一个现有的 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 文件,我可以在其中更改名称元素 =“约翰”的“合同”元素的内容。

例如

<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>

我该怎么做?

【问题讨论】:

  • XDocument 是一个很好的起点。用 linq 语句操作你的 dom 真的很容易。看看 ReplaceWith 功能,它允许您用新的节点或 XElement 替换。

标签: c# linq


【解决方案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");

【讨论】:

  • 感谢罗伯特扩展我的回答
【解决方案2】:

要修改现有元素首先获取选定的名称,例如在ComboBoxSelectedIndexChanged 事件中使用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

【讨论】:

  • 这似乎不符合 OP 的要求。
  • 谢谢兄弟,你简直太棒了:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多