C# 在特定位置的另一个XElement中添加XElement

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

我的XML:


我想在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);