Creación de una jerarquía mediante la agrupación (LINQ to XML)
Los datos se pueden agrupar en función de los valores relacionados de distintos elementos y, después, reordenarlos para colocar los elementos relacionados en un elemento que refleje la relación. En este artículo se proporciona un ejemplo para C# y Visual Basic.
En el siguiente ejemplo se muestra cómo agrupar datos y después generar XML basado en la agrupación. En él se agrupan primero los datos por igualdad de valor de los elementos <Category>
y, a continuación, se genera un nuevo archivo XML en el que la jerarquía XML refleja la agrupación.
En este ejemplo se usa el documento XML Ejemplo de archivo XML: Datos numéricos.
XElement doc = XElement.Load("Data.xml");
var newData =
new XElement("Root",
from data in doc.Elements("Data")
group data by (string)data.Element("Category") into groupedData
select new XElement("Group",
new XAttribute("ID", groupedData.Key),
from g in groupedData
select new XElement("Data",
g.Element("Quantity"),
g.Element("Price")
)
)
);
Console.WriteLine(newData);
Dim doc As XElement = XElement.Load("Data.xml")
Dim newData As XElement = _
<Root>
<%= _
From data In doc.<Data> _
Group By category = data.<Category>(0).Value _
Into groupedData = Group _
Select <Group ID=<%= category %>>
<%= _
From g In groupedData _
Select _
<Data>
<%= g.<Quantity>(0) %>
<%= g.<Price>(0) %>
</Data> _
%>
</Group> _
%>
</Root>
Console.WriteLine(newData)
Este ejemplo produce el siguiente resultado:
<Root>
<Group ID="A">
<Data>
<Quantity>3</Quantity>
<Price>24.50</Price>
</Data>
<Data>
<Quantity>5</Quantity>
<Price>4.95</Price>
</Data>
<Data>
<Quantity>3</Quantity>
<Price>66.00</Price>
</Data>
<Data>
<Quantity>15</Quantity>
<Price>29.00</Price>
</Data>
</Group>
<Group ID="B">
<Data>
<Quantity>1</Quantity>
<Price>89.99</Price>
</Data>
<Data>
<Quantity>10</Quantity>
<Price>.99</Price>
</Data>
<Data>
<Quantity>8</Quantity>
<Price>6.99</Price>
</Data>
</Group>
</Root>
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: