C# 在特定位置的另一个XElement中添加XElement
我的XML:C# 在特定位置的另一个XElement中添加XElement,c#,linq,linq-to-xml,xelement,C#,Linq,Linq To Xml,Xelement,我的XML: 我想在customer id=2之前添加新的account元素。 我在xelement中有这个xml,我想在第一个xelement中添加其他xelement。你怎么能这么做? 感谢您的帮助。linq to xml使此操作变得简单: <Bank> <Customer id="0"> <Accounts> <Account id="0" /> <Accoun
我想在customer id=2之前添加新的account元素。
我在xelement中有这个xml,我想在第一个xelement中添加其他xelement。你怎么能这么做?
感谢您的帮助。linq to xml使此操作变得简单:
<Bank>
<Customer id="0">
<Accounts>
<Account id="0" />
<Account id="1" />
</Accounts>
</Customer>
<Customer id="2">
<Accounts>
<Account id="0" />
</Accounts>
</Customer>
</Bank>
//将XML文档解析为XDocument
var xml=@”
";
var doc=XDocument.Parse(xml);
//创建要添加的新客户
var newCustomer=新XElement(“客户”,
新的X属性(“id”、“1”),
新XElement(“账户”,
新XElement(“帐户”,新XAttribute(“id”,“0”))
)
);
//查找id为“2”的客户
var customer2=doc.Root.Elements(“客户”).First(x=>x.Attribute(“id”).Value==“2”);
//在id为“2”的客户之前添加新客户
customer2.AddBeforeSelf(新客户);
为什么要这样?询问此问题是因为xml元素的顺序不应导致序列化或反序列化中出现任何问题。您的意思是要添加一个新的自定义元素,还是一个新的帐户元素(或两者兼有)?否我想在使用doc=Xdocument.parse(xml)之前添加?因为我使用了一个XElement-XElement-myxElement=new-XElement();MemoryStream myStream=新的MemoryStream();myxElement.Save(myStream);无法更新此myxElement?@Ammar.Dev您可以随意获取XDocument
。我把它添加到我的答案中,这样你就可以运行它了。在您刚刚发布的代码中,您将一个XElement保存到一个流中,而不是从@canton7的某个地方加载它不,我的意思是我加载了xdocument,我想将其保存为XElement,但在保存之前,我想向该XElement添加另一个XElement。这就是我文章的标题。我的意思是如何将新的XElement添加到现有XElement?@Ammar.Dev,这样您就已经有了创建doc
的代码了?如果是这样,跳过我答案中的前两行,直接从创建newCustomer
@canton7的位开始,doc.Root呢?我不认识我的医生,因为我只有一个孩子?
// Parse our XML document to an XDocument
var xml = @"<Bank>
<Customer id=""0"">
<Accounts>
<Account id=""0"" />
<Account id=""1"" />
</Accounts>
</Customer>
<Customer id=""2"">
<Accounts>
<Account id=""0"" />
</Accounts>
</Customer>
</Bank>";
var doc = XDocument.Parse(xml);
// Create our new Customer to add
var newCustomer = new XElement("Customer",
new XAttribute("id", "1"),
new XElement("Accounts",
new XElement("Account", new XAttribute("id", "0"))
)
);
// Find the customer with id="2"
var customer2 = doc.Root.Elements("Customer").First(x => x.Attribute("id").Value == "2");
// Add the new customer before the customer with id="2"
customer2.AddBeforeSelf(newCustomer);