Compartir a través de


Información general acerca de LINQ to XML

Actualización: November 2007

XML se ha adoptado ampliamente como un modo de dar formato a datos en diversos contextos. Por ejemplo, puede encontrar XML en la web, en archivos de configuración, en archivos de Microsoft Office Word y en bases de datos.

LINQ to XML es un método actualizado y rediseñado para la programación con XML. Proporciona capacidades de modificación de documento en memoria de Document Object Model (DOM), y es compatible con expresiones de consulta LINQ. Aunque estas expresiones de consulta difieren sintácticamente de XPath, proporcionan una funcionalidad similar.

Desarrolladores de LINQ to XML

LINQ to XML se dirige a diversos desarrolladores. Para el desarrollador medio que sólo desea completar una tarea, LINQ to XML simplifica el código XML al proporcionar una experiencia de consulta similar a SQL. Con un poco de estudio, los programadores pueden aprender a escribir consultas sucintas y eficaces en el lenguaje de programación que prefieran.

Los desarrolladores profesionales pueden usar LINQ to XML para aumentar considerablemente su productividad. Con LINQ to XML, pueden escribir menos código, que a su vez resulte más expresivo, compacto y eficaz. Pueden usar expresiones de consulta de distintos dominios de datos simultáneamente.

¿Qué es LINQ to XML?

LINQ to XML es una interfaz de programación XML en memoria y habilitada para LINQ que permite trabajar con XML desde los lenguajes de programación de .NET Framework.

LINQ to XML se parece al Modelo de objetos de documento (DOM) en lo que respecta a la inserción del documento XML en la memoria. Puede consultar y modificar el documento; una vez modificado, puede guardarlo en un archivo o serializarlo y enviarlo a través de Internet. Sin embargo, LINQ to XML es diferente de DOM: proporciona un nuevo modelo de objetos más ligero con el que se trabaja más fácilmente y que aprovecha las mejoras de lenguaje de Visual C# 2008.

La ventaja más importante de LINQ to XML radica en su integración con Language-Integrated Query (LINQ). Esta integración permite escribir consultas en el documento XML en memoria para recuperar colecciones de elementos y atributos. La capacidad de consulta de LINQ to XML es comparable en cuanto a funcionalidad (aunque no cuanto a sintaxis) a XPath y XQuery. La integración de LINQ en Visual C# 2008 proporciona una escritura más rápida, comprobación en tiempo de compilación y una compatibilidad mejorada con el depurador.

Otra ventaja de LINQ to XML es la capacidad de usar los resultados de la consulta como parámetros en constructores de objetos XElement y XAttribute, que habilita un método eficaz para crear árboles XML. Este método, denominado construcción funcional, permite que los desarrolladores transformen fácilmente árboles XML de una forma a otra.

Por ejemplo, es posible que tenga un pedido de compra XML típico, tal como se describe en Archivo XML de muestra: pedido de compra típico (LINQ to XML). Mediante LINQ to XML, podría ejecutar la siguiente consulta para obtener el valor del atributo de número de pieza relativo a cada elemento del pedido de compra:

IEnumerable<string> partNos =
    from item in purchaseOrder.Descendants("Item")
    select (string) item.Attribute("PartNumber");

En Visual Basic, la misma consulta se puede escribir del siguiente modo:

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Select item.@PartNumber

A modo de ejemplo, imagine que necesita una lista, ordenada por números de pieza, de los elementos con un valor superior a 100 $. Para obtener esta información, podría ejecutar la siguiente consulta:

IEnumerable<XElement> partNos =
    from item in purchaseOrder.Descendants("Item")
    where (int) item.Element("Quantity") *
        (decimal) item.Element("USPrice") > 100
    orderby (string)item.Element("PartNumber")
    select item;

En Visual Basic, la misma consulta se puede escribir del siguiente modo:

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Where (item.<Quantity>.Value * _
           item.<USPrice>.Value) > 100 _
    Order By item.<PartNumber>.Value _
    Select item

Además de estas capacidades de LINQ, LINQ to XML proporciona una interfaz de programación XML mejorada. Con LINQ to XML, se puede:

  • Cargar XML a partir de archivos o secuencias.

  • Serializar XML a archivos o secuencias.

  • Crear árboles XML desde cero mediante la construcción funcional.

  • Realizar consultas de XML con ejes de tipo XPath.

  • Manipular el árbol XML en memoria con métodos como Add, Remove, ReplaceWith y SetValue.

  • Validar árboles XML mediante XSD.

  • Usar una combinación de estas características para transformar las formas de los árboles XML.

Crear árboles XML

Una de la ventajas más significativas de la programación con LINQ to XML es la facilidad con que se pueden crear árboles XML. Por ejemplo, para crear un árbol XML pequeño, puede escribir código C# de la siguiente manera:

XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement("Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144", 
                new XAttribute("Type", "Home")),
            new XElement("phone", "425-555-0145",
                new XAttribute("Type", "Work")),
            new XElement("Address",
                new XElement("Street1", "123 Main St"),
                new XElement("City", "Mercer Island"),
                new XElement("State", "WA"),
                new XElement("Postal", "68042")
            )
        )
    );

En Visual Basic, el código para crear el árbol XML es incluso más sencillo, ya que usa un literal XML:

Dim contacts = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type="Home">206-555-0144</Phone>
            <Phone Type="Work">425-555-0145</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

El compilador de Visual Basic traduce los literales XML a llamadas a métodos en LINQ to XML.

Para obtener más información, vea Crear árboles XML.

Vea también

Conceptos

Información general sobre LINQ to XML en Visual Basic

Referencia

System.Xml.Linq

Otros recursos

Introducción (LINQ to XML)

XML en Visual Basic