For a xml Document like below I display all subfolders and files for the currently selected folder. For that from the xml string i remove the unmatched folders and built a UI using XSLT on the front end. Seems the operation is removing all the nodes that makes resulting string invalid xml. so
- How do i remove elements from xml using Linq to Xml without changing the validity of the document
Xml Document
<?xml version="1.0" encoding="utf-8"?>
<Folder>
<Folders>
<Folder ID="1" Name="Root" ParentId="0">
<Files></Files>
</Folder>
<Folder ID="2" Name="My Documents" ParentId="1">
<Files>
<File Name="LicenceCode.txt" Size="2000" CreatedOn="1/1/2012 12:12:00 PM" CreatedBy="1" ModifiedOn="1/10/2012 10:12:56 AM" ModifiedBy="2"></File>
</Files>
</Folder>
</Folders>
</Folder>
Code
XElement filesAndFolders = XElement.Parse(xmlDocumentString);
string outputFolders = string.concat(from folders in filesAndFolders in filesAndFolder.Elements("Folder").Folder("Folders") where folders.Attribute("ParentId").Value.Equals(selectedFolderId) select folders);
//pass outputFolders string to xsl to build the UI
Problem
The outputFolders string is invalid as it contains only below string not a valid document
<Folder ID="2" Name="My Documents" ParentId="1">
<Files>
<File Name="LicenceCode.txt" Size="2000" CreatedOn="1/1/2012 12:12:00 PM" CreatedBy="1" ModifiedOn="1/10/2012 10:12:56 AM" ModifiedBy="2"></File>
</Files>
</Folder>
How about removing the elements you don’t want: