簡體   English   中英

Linq to XML將元素添加到特定子樹

[英]Linq to XML Add element to specific sub tree

我的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不是我的好朋友:(

您幾乎就在那里,您的代碼將默認添加元素給第一個Customer 您需要在值為2的Customers集合中搜索屬性id -

document.Element("Bank").Elements("Customer")
        .First(c => (int)c.Attribute("id") == 2).Element("Accounts").Add
                 (
                     new XElement
                         (
                             "Account", new XAttribute("id", "variable")
                         )
                  );

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

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

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

請注意,如果沒有一個具有正確ID的Customer元素,則Single調用將失敗。 如果你想創建一個客戶,你需要做更多的工作 - 但可能不管怎么說,這將是一個不同的電話。

var cust = xDoc.Descendants("Customer")
               .First(c => c.Attribute("id").Value == "2");
cust.Element("Accounts").Add(new XElement("Account", new XAttribute("id","3") ));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM