Tengo un XDocument donde me gustaría ordenar todos los elementos alfabéticamente. Aquí hay una versión simplificada de la estructura:Ordenando todos los elementos en un XDocument
<Config>
<Server>
<Id>svr1</Id>
<Routing>
<RoutingNodeName>route1</RoutingNodeName>
<Subscription>
<Id>1</Id>
</Subscription>
<RoutingParameters id="Routing1">
<Timeout>7200</Timeout>
</RoutingParameters>
</Routing>
<Storage>
<Physical>HD1</Physical>
</Storage>
</Server>
<Applications>
<Services>
<Local></Local>
</Services>
</Applications>
</Config>
Estoy queriendo ordenar los elementos en estos documentos a todos los niveles, hasta ahora soy capaz de solucionar el problema de esta manera:
private static XDocument Sort(XDocument file)
{
return new XDocument(
new XElement(file.Root.Name,
from el in file.Root.Elements()
orderby el.Name.ToString()
select el));
}
Qué produce:
<Config>
<Applications>
<Services>
<Local></Local>
</Services>
</Applications>
<Server>
<Id>svr1</Id>
<Routing>
<RoutingNodeName>route1</RoutingNodeName>
<Subscription>
<Id>1</Id>
</Subscription>
<RoutingParameters id="Routing1">
<Timeout>7200</Timeout>
</RoutingParameters>
</Routing>
<Storage>
<Physical>HD1</Physical>
</Storage>
</Server>
</Config>
me gustaría ser capaz de ordenar todos los elementos secundarios de la misma manera (a través de una función recursiva idealmente). ¿Alguna idea de cómo puedo hacer esto con LINQ?
Gracias por cualquier idea.
Gracias , Pude usar esto para obtener mi resultado deseado con los atributos y el texto. Aclamaciones. –
Esta es una gran manera de mostrar cómo ordenar los nodos, pero deshacerse de todos los valores y atributos no es una respuesta que responda a la pregunta de [email protected] hubiera sido genial si hubieras editado esta respuesta mostrando a todos los demás cómo obtuviste la respuesta correcta que estabas buscando. –
@ArvoBowen: He actualizado mi respuesta. – dtb