6

私は2つのxmls.SourceXmlとTargetXmlを持っています

XML のいくつかの要素を別の XML にインポートしています。

これで問題ありませんが、一部の要素については名前を変更する必要があります。私が現在行っていることは、要素を最初から構築していることですが、唯一の違いはxmlの名前です。

例を挙げましょう。

私のソースXmlには、という要素があります

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

My Target 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 に答える