2014-12-27 4 views
-1

У меня есть два XML-файлы, которые имеют следующие элементы INSITE них (элемент элемента и его ребенка только):Перемещение элементов из одного XML-файла в другой XML

<warehouse> 
    <cat id="computer"> 
    <item> 
     <SN>value</SN> 
     <name>value</name> 
     <quantity>value</quantity> 
     <description>value </description> 
     <price>value</price> 
    </item> 
    </cat> 
    <cat id="Stationery"> 
    <item> 
     <SN>value</SN> 
     <name>value</name> 
     <quantity>value</quantity> 
     <description>value </description> 
     <price>value</price> 
    </item> 
    </cat> 
</warehouse> 

// я здесь следующий код которые удаляют эти элементы (только элемент элемента и его дочерний элемент).

xmlDoc.Root.Descendants("cat").Where(x => x.Attribute("id").Value == "computer") 
     .Descendants("item").Where(x => x.Element("SN").Value.Trim() == Dropdownlist.Text) 
     .Remove(); 
xmlDoc.Save(@"YourXML.xml"); 

Я хочу скопировать эти элементы из первого файла xml во второй файл xml перед их удалением. Как я могу выполнить такой процесс с помощью LINQ?

ответ

1

Вы можете легко сохранить результаты запроса первым, добавьте копию в другой XDocument инстанции, а затем вызвать Remove:

var itemsToRemove = xmlDoc.Root.Descendants("cat") 
           .Where(x => x.Attribute("id").Value == "computer") 
           .Descendants("item") 
           .Where(x => x.Element("SN").Value.Trim() == Dropdownlist.Text) 
           .ToList(); 

// Add is smart enough to perform deep clone of your XML structure on add 
otherDoc.Root.Element("cat").Add(itemsToRemove); 

itemsToRemove.Remove(); 

xmlDoc.Save(@"YourXML.xml"); 
+0

спасибо так много. –

Смежные вопросы