6

我有 2 个 xmls.SourceXml 和 TargetXml

我正在将 xml 的一些元素导入另一个 xml。

这一切都很好,但是一些元素我只需要更改名称。我目前正在做的是从头开始构建元素,唯一的区别是 xml 的名称。

让我给你举个例子。

在我的 Source Xml 中,我有一个名为

 <OldBank>
       <SortCode>123456</SortCode>
       <AccountNumber>12345678</AccountNumber>  
       etc....        
 </OldBank>

在我的目标 xml 中,应调用 NewBank,其子元素完全相同

  <NewBank>
       <SortCode>123456</SortCode>
       <AccountNumber>12345678</AccountNumber>  
       etc....        
 </NewBank>

这就是我所做的:

    public static void ReplaceNewCustomerDetails(this XDocument xDoc)
    {
        XElement oldBankElement = GetOldBankElement(xDoc);

       var newBakXml= new XElement("NewBank",
                     new XElement(oldBankElement.ElementOrDefault("SortCode")),
                     new XElement(oldBankElement.ElementOrDefault("AccountNumber")));

       //Build new xml. This is what I do
       var newXml = new XElement("MyNewXml");
       newXml.Add(newBakXml);

      //I wish I could just change the name of the xml rather then building it again
       var newXml = new XElement("MyNewXml");
       newXml.Add(oldBankElement.Name="NewBank");

任何建议或更优雅的解决方案

谢谢

4

1 回答 1

10

您不需要创建新元素 - 只需传递现有的:

var newBankXml = new XElement("NewBank", 
                             oldBankElement.Attributes(), 
                             oldBankElement.Elements());
newXml.Add(newBankXml);

或者只是更改名称:

oldBankElement.Name = "NewBank";
newXml.Add(oldBankElement);
于 2013-01-27T07:34:09.707 回答