我有2个xmls.SourceXml和TargetXml 我正在将xml的一些元素导入另一个xml. 这一切都很好但是有些元素我只需要更改名称. 我目前在做什么我从头开始构建元素,唯一的区别是xml的名称. 让我给你
我正在将xml的一些元素导入另一个xml.
这一切都很好但是有些元素我只需要更改名称.
我目前在做什么我从头开始构建元素,唯一的区别是xml的名称.
让我给你举个例子.
在我的Source 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");
任何建议或更优雅的解决方案
谢谢
您不需要创建新元素 – 只需传递现有元素:var newBankXml = new XElement("NewBank", oldBankElement.Attributes(), oldBankElement.Elements()); newXml.Add(newBankXml);
或者只是更改名称:
oldBankElement.Name = "NewBank"; newXml.Add(oldBankElement);