[英]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.