|
<< Click to Display Table of Contents >> XML - Gerar e salvar com LINQ - XDocument |
![]() ![]()
|
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