Partilhar via


Construção funcional (LINQ to XML)

O LINQ to XML fornece uma maneira poderosa de criar elementos XML chamados construção funcional. A construção funcional permite criar uma árvore XML em uma única instrução.

Várias características-chave da interface de programação LINQ to XML são usadas na construção funcional:

  • O XElement construtor usa vários tipos de argumentos para o conteúdo. Por exemplo, você pode passar outro XElement objeto, que se torna um elemento filho. Você pode passar um XAttribute objeto, que se torna um atributo do elemento. Ou você pode passar qualquer outro tipo de objeto, que é convertido em uma cadeia de caracteres e se torna o conteúdo de texto do elemento.
  • O XElement construtor usa uma params matriz do tipo Object, para que você possa passar qualquer número de objetos para o construtor. Isso permite que você crie um elemento que tenha conteúdo complexo.
  • Se um objeto implementa IEnumerable<T>, a coleção no objeto é enumerada e todos os itens na coleção são adicionados. Se a coleção contiver XElement ou XAttribute objetos, cada item da coleção será adicionado separadamente. Isso é importante porque permite que você passe os resultados de uma consulta LINQ para o construtor.

Exemplo: Criar uma árvore XML

Você pode usar a construção funcional para escrever código para criar uma árvore XML. Veja o exemplo seguinte:

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

Exemplo: Criar uma árvore XML usando os resultados da consulta LINQ

Esses recursos também permitem que você escreva código que usa os resultados de consultas LINQ quando você cria uma árvore XML, como no exemplo a seguir:

XElement srcTree = new XElement("Root",
    new XElement("Element", 1),
    new XElement("Element", 2),
    new XElement("Element", 3),
    new XElement("Element", 4),
    new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    from el in srcTree.Elements()
    where (int)el > 2
    select el
);
Console.WriteLine(xmlTree);

No Visual Basic, a mesma coisa é realizada com literais XML:

Dim srcTree As XElement = _
    <Root>
        <Element>1</Element>
        <Element>2</Element>
        <Element>3</Element>
        <Element>4</Element>
        <Element>5</Element>
    </Root>
Dim xmlTree As XElement = _
    <Root>
        <Child>1</Child>
        <Child>2</Child>
        <%= From el In srcTree.Elements() _
            Where CInt(el) > 2 _
            Select el %>
    </Root>
Console.WriteLine(xmlTree)

Este exemplo produz a seguinte saída:

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Element>3</Element>
  <Element>4</Element>
  <Element>5</Element>
</Root>

Consulte também