XML - Gerar e salvar com LINQ - XDocument

<< Click to Display Table of Contents >>

Navigation:  XML >

XML - Gerar e salvar com LINQ - XDocument

Previous pageReturn to chapter overviewNext page

Arquivo gerado por este exemplo

 

<?xml version="1.0" encoding="utf-8"?>

<!--Início-->

<contatos>

    <contato>

        <nome atributo="valor1">Exemplo1</nome>

        <email>exemplo1@cbsa.com.br</email>

    </contato>

    <contato>

        <nome atributo="valor2">Exemplo2</nome>

        <email>exemplo2@cbsa.com.br</email>

    </contato>

</contatos>

<!--Fim-->

 

Como gerar

 

            //Novo documento

            XDocument doc = new XDocument();

            //Adicionar comentário 'Início'

            doc.Add(new XComment("Início"));

            //Adicionar a tag raiz

            doc.Add(new XElement("contatos",

                //Inicia o elemento "contato"

                new XElement("contato",

                //Adicionar o elemento "nome"

                    new XElement("nome""Exemplo1",

                //Adicionar um atributo ao elemento "nome"

                        new XAttribute("atributo""valor1")),

                //Adicionar o elemento "email"

                    new XElement("email""exemplo1@cbsa.com.br")

                    ),

                //Inicia o elemento "contato"

                new XElement("contato",

                //Adicionar o elemento "nome"

                    new XElement("nome""Exemplo2",

                //Adicionar um atributo ao elemento "nome"

                        new XAttribute("atributo""valor2")),

                //Adicionar o elemento "email"

                    new XElement("email""exemplo2@cbsa.com.br")

                    )

                ));

            //Adicionar comentário 'Fim'

            doc.Add(new XComment("Fim"));

 

            //Salvar o arquivo

            doc.Save(MapPath("~/exemplo.xml"));

 

Abaixo alguns exemplos de como ler arquivo XML com LINQ.

 

Pegar o elemento que tiver o atributo = valor2

 

            //Carregar o arquivo XML

            XElement xml = XElement.Load(MapPath("~/exemplo.xml"));

            //Fazer a consulta

            IEnumerable<XElement> contatos =

                from el in xml.Elements("contato").Elements("nome")

                //Filtro para verificar se o "atributo" não é null e se é = valor2

                where el.Attribute("atributo"!= null && el.Attribute("atributo").Value == "valor2"

                select el;

            //Responder na tela os itens encontrados

            foreach (XElement el in contatos)

                Response.Write(el.Value);

 

Pegar apenas os elementos "nome"

 

            //Carregar o arquivo XML

            XElement xml2 = XElement.Load(MapPath("~/exemplo.xml"));

            //Fazer a consulta

            IEnumerable<XElement> contatos2 =

                from el in xml2.Elements("contato")

                //Filtro para pegar todos os Elementos "nome"

                where el.Elements("nome"!= null

                select el;

            //Responder na tela os itens encontrados

            foreach (XElement el in contatos2)

                Response.Write(el.Value);

 

Ler XML com XNamespace

 

            //Ler XML com Namespace

            //Carregar o arquivo XML

            XElement root2 = XElement.Load(MapPath("~/exemplo.xml"));

            //Pega o Namespace declarado no arquivo XML

            XNamespace xnamespace = root2.GetDefaultNamespace();

            //Para definir o namespace manualmente basta usar a linha abaixo

            //XNamespace xnamespace = "http://www.w3.org/2000/xmlns";

 

            //Fazer a consulta

            IEnumerable<XElement> address2 =

            from el in root2.Elements(xnamespace + "contato").Elements(xnamespace + "nome")

            where (string)el.Attribute("atributo"== "valor2"

            select el;

            //Responder na tela os itens encontrados

            foreach (XElement el in address2)

                Response.Write(el.Value);

 

Fonte

 

http://cbsa.com.br/post/gerar-e-salvar-xml-com-linq---xdocument.aspx

 

Caso ocora o erro "Select" ou "Where" not found você pode acessar este artigo

 

http://cbsa.com.br/post/resolver---select-where-not-found---linq.aspx