Primeiramente para usarmos a função temos que importar o namespace:
Código:
using System.Xml;
O proximo passo para manipularmos um documento XML é carregarmos ele em memoria. Para isso podemos utilizar a classe XmlDocument.
Código:
<empresa>
<funcionario>
<id>10 </id>
<nome>Frederico da Silva </nome>
<idade>25 </idade>
<cargo>Gerente </cargo>
</funcionario>
</empresa>
Para carregar o Xml que está em um arquivo fisico "Artigo_XML.xml" utilizamos o método Load(arquivo.xml).
Criação do Arquivo xml:
Código:
string caminho = @"C:\Artigo_XML.xml";
if (!File.Exists(caminho))
{
XmlDocument doc = new XmlDocument();
XmlNode raiz = doc.CreateElement("empresa");
doc.AppendChild(raiz);
doc.Save(caminho);
}
Se o arquivo não existir ele cria o arquivo xml, sendo necessário a inseração de um elemento Root neste exemplo
representado pelo elemento "empresa".
Inserir Registro:
Depois de criado precisamos muitas vezes inserir as informações no arquivo xml já existente, com isso precisamos inserir novos elementos utilizando o Método AppendChild.
Código:
XmlDocument doc = new XmlDocument();
string caminho = @"C:\Artigo_XML.xml";
doc.Load(caminho);
XmlNode linha = doc.CreateElement("funcionario");
XmlNode Id = doc.CreateElement("id");
XmlNode Nome = doc.CreateElement("nome");
XmlNode Idade = doc.CreateElement("idade");
XmlNode Cargo = doc.CreateElement("cargo");
Id.InnerText = "11";
Nome.InnerText = "Mario da Silva";
Idade.InnerText = "35";
Cargo.InnerText = "Financeiro";
linha.AppendChild(Id);
linha.AppendChild(Nome);
linha.AppendChild(Idade);
linha.AppendChild(Cargo);
doc.SelectSingleNode("/empresa").AppendChild(linha);
doc.Save(caminho);
Alterar Registro:
Para a alteraçãoo de um elemento do xml podemos utilizar:
Código:
XmlDocument doc = new XmlDocument();
string caminho = @"C:\Artigo_XML.xml";
doc.Load(caminho);
XmlNode no;
no = doc.SelectSingleNode(String.Format("/empresa/funcionario[id={0}]", 10));
no.SelectSingleNode("./cargo").InnerText = "Gerente Administrativo";
doc.Save(caminho);
Deletar Registro:
Para Deletar um elemento do xml baseado em uma condição podemos utilizar:
Código:
XmlDocument doc = new XmlDocument();
string caminho = @"C:\Artigo_XML.xml";
doc.Load(caminho);
foreach (XmlNode no in doc.DocumentElement.ChildNodes)
{
if (int.Parse(no.ChildNodes.Item(0).InnerText) == 10)
{
doc.DocumentElement.RemoveChild(no);
doc.Save(caminho);
return;
}
}
Créditos: Fabricio Rocha
Revisão: Meneghini
Fonte: Pro Code