Partilhar via


Construção funcional (LINQ to XML)

LINQ to XML provides a powerful way to create XML elements called functional construction. Functional construction is the ability to create an XML tree in a single statement.  

Há vários recursos chave da interface de programação do LINQ to XML que permitem a construção funcional:

  • O construtor XElement utiliza vários tipos de argumentos para o conteúdo. Por exemplo, você pode passar outro objeto XElement, que se torna um elemento filho. Você pode passar um objeto XAttribute, que se torna um atributo do elemento. Ou você pode passar qualquer outro tipo de objeto, que é convertido em uma cadeia de caracteres e torna-se o conteúdo de texto do elemento.

  • O construtor XElement utiliza uma matriz de params do tipo Object, para que você possa passar qualquer número de objetos para o construtor. Isso permite que você crie um elemento que tem o conteúdo complexo.

  • Se um objeto implementar IEnumerable, a coleção no objeto será enumerada, e todos os itens da coleção serão adicionados. Se a coleção contiver objetos XElement ou XAttribute, cada item da coleção será adicionado separadamente. Isso é importante porque permite que você passe os resultados de uma consulta do LINQ para o construtor.

Esses recursos permitem escrever código para criar uma árvore XML. A seguir está um exemplo:

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")
            )
        )
    );

Esses recursos também permitem que você escreva código que usa os resultados de consultas do LINQ quando você cria uma árvore XML, da seguinte maneira:

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 os 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 gera a seguinte saída:

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

Consulte também

Conceitos

Criando árvores XML