12

我的 XML:

<Bank>
 <Customer id="0">
  <Accounts>
   <Account id="0" />
   <Account id="1" />                      
  </Accounts>
 </Customer>
 <Customer id="1">
  <Accounts>
   <Account id="0" />                    
   </Accounts>
 </Customer>
 <Customer id="2">
  <Accounts>
   <Account id="0" />                    
  </Accounts>
 </Customer>
</Bank>

我想添加新的 Account 元素,让我们说 ID 为 2 的客户。我知道如何添加我不知道如何指定客户的行(我在哪里写客户的 ID?)

我的 LINQ to XML 代码:

XDocument document = XDocument.Load("database.xml");
document.Element("Bank").Element("Customer").Element("Accounts").Add
     (
         new XElement
             (
                 "Account", new XAttribute("id", "variable")
             )
      );
document.Save("database.xml");

谢谢您的帮助。XML 不是我的好朋友 :(

4

3 回答 3

23

您快到了,您的代码将默认将元素添加到第一个Customer. id您需要在值为 2 的客户集合中搜索属性-

document.Element("Bank").Elements("Customer")
        .First(c => (int)c.Attribute("id") == 2).Element("Accounts").Add
                 (
                     new XElement
                         (
                             "Account", new XAttribute("id", "variable")
                         )
                  );
于 2012-11-11T17:54:05.917 回答
3

我知道如何添加我不知道如何指定客户的行(我在哪里写客户的 ID?)

您需要先找到Customer具有正确 ID 的元素。例如:

var customer = document.Root
                       .Elements("Customer")
                       .Single(x => (int) x.Attribute("id") == id);
customer.Element("Accounts").Add(new XElement("Account",
                                              new XAttribute("id", "variable")));

请注意,Single如果没有一个Customer元素具有正确的 ID,这将在调用中失败。如果你想创建一个客户,你需要做更多的工作——但大概这将是一个不同的电话。

于 2012-11-11T17:50:03.430 回答
0
var cust = xDoc.Descendants("Customer")
               .First(c => c.Attribute("id").Value == "2");
cust.Element("Accounts").Add(new XElement("Account", new XAttribute("id","3") ));
于 2012-11-11T17:52:31.810 回答