1. Sabe-se que existe um arquivo XML (bookstore.xml) da seguinte forma:
<?xml version="1.0" encoding="gb2312"?>
<livraria>
<gênero do livro="fantasia" ISBN="2-3631-4">
<title>O Legado de Oberon</title>
<autor>Corets, Eva</autor>
<preço>5,95</preço>
</livro>
</livraria>
1. Insira um nó <book> no nó <bookstore>:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("livraria.xml");
XmlNode root=xmlDoc.SelectSingleNode("livraria");//Encontrar <livraria>
XmlElement xe1=xmlDoc.CreateElement("book");//Cria um nó <book>
xe1.SetAttribute("genre","Li Zanhong");//Define o atributo de gênero do nó
xe1.SetAttribute("ISBN","2-3631-4");//Define o atributo ISBN do nó
XmlElement xesub1=xmlDoc.CreateElement("título");
xesub1.InnerText="CS do iniciante ao proficiente";//Definir nós de texto
xe1.AppendChild(xesub1);//Adicionar ao nó <book>
XmlElement xesub2=xmlDoc.CreateElement("autor");
xesub2.InnerText="houjie";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("preço");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//Adicionar ao nó <bookstore>
xmlDoc.Save("livraria.xml");
//================
O resultado é:
<?xml version="1.0" encoding="gb2312"?>
<livraria>
<gênero do livro="fantasia" ISBN="2-3631-4">
<title>O Legado de Oberon</title>
<autor>Corets, Eva</autor>
<preço>5,95</preço>
</livro>
<gênero do livro="李zanhong" ISBN="2-3631-4">
<title>CS da entrada ao mestre</title>
<autor>Houjie</autor>
<preço>58,3</preço>
</livro>
</livraria>
2. Modifique o nó: altere o valor do gênero do nó cujo valor do atributo de gênero é "Li Zanhong" para "updateLi Zanhong" e modifique o texto do nó filho <autor> deste nó para "Ya Sheng".
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//Obtém todos os nós filhos do nó da livraria
foreach(XmlNode xn em nodeList) // Percorre todos os nós filhos
{
XmlElement xe=(XmlElement)xn;//Converte o tipo de subnó para o tipo XmlElement
if(xe.GetAttribute("genre")=="Li Zanhong")//Se o valor do atributo de gênero for "Li Zanhong"
{
xe.SetAttribute("genre","update Li Zanhong");//Modifique o atributo para "update Li Zanhong"
XmlNodeList nls=xe.ChildNodes;//Continue para obter todos os nós filhos do nó filho xe
foreach(XmlNode xn1 em nls)//Traverse
{
XmlElement xe2=(XmlElement)xn1;//Tipo de conversão
if(xe2.Name=="autor")//Se encontrado
{
xe2.InnerText="Yasheng";//Modificar
break; //Basta encontrá-lo e sair.
}
}
quebrar;
}
}
xmlDoc.Save("livraria.xml");//Salvar.
//==================
O resultado final é:
<?xml version="1.0" encoding="gb2312"?>
<livraria>
<gênero do livro="fantasia" ISBN="2-3631-4">
<title>O Legado de Oberon</title>
<autor>Corets, Eva</autor>
<preço>5,95</preço>
</livro>
<gênero do livro = "atualização李zanhong" ISBN = "2-3631-4">
<title>CS da entrada ao mestre</title>
<autor>Assalto</autor>
<preço>58,3</preço>
</livro>
</livraria>
3. Exclua o atributo de gênero do nó <book Gener="fantasy" ISBN="2-3631-4"> e exclua o nó <book Gener="update Li Zanhong" ISBN="2-3631-4">.
XmlNodeList xnl=xmlDoc.SelectSingleNode("livraria").ChildNodes;
foreach(XmlNode xn em xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("gênero")=="fantasia")
{
xe.RemoveAttribute("genre");//Exclui o atributo de gênero
}
senão if(xe.GetAttribute("gênero")=="atualizarLi Zanhong")
{
xe.RemoveAll();//Exclui todo o conteúdo do nó
}
}
xmlDoc.Save("livraria.xml");
//====================
O resultado final é:
<?xml version="1.0" encoding="gb2312"?>
<livraria>
<livro ISBN="2-3631-4">
<title>O Legado de Oberon</title>
<autor>Corets, Eva</autor>
<preço>5,95</preço>
</livro>
<livro>
</livro>
</bookstore>
4. Exiba todos os dados.
XmlNode xn=xmlDoc.SelectSingleNode("livraria");
XmlNodeList xnl=xn.ChildNodes;
foreach(XmlNode xnf em xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//Exibir valor do atributo
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf1=xe.ChildNodes;
foreach (XmlNode xn2 em xnf1)
{
Console.WriteLine(xn2.InnerText); //Exibe o texto do nó filho
}
}
Deixe para referência, endereço original http://blog.yesky.com/75/richsee/1211075.shtml
2 Código front-end: html
<%@ Page language="c#" Codebehind="Main.aspx.cs" AutoEventWireup="false" Inherits="DsAndXML.OpXMLFile.Main" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<CABEÇA>
<title>Principal</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
</HEAD>
<corpo MS_POSITIONING="GridLayout">
<form id="Main" method="post" runat="servidor">
<FONT face="宋体">
<asp:DataGrid id="dgShow" style="Z-INDEX: 100; ESQUERDA: 113px; POSIÇÃO: absoluta; SUPERIOR: 32px" runat="servidor" Largura="480px" Altura="178px"></asp: Grade de dados>
<asp:Label id="Label3" style="Z-INDEX: 111; LEFT: 187px; POSITION: absoluto; TOP: 383px" runat="server" Width="120px" Height="21px">Novo endereço de e-mail: </asp:Rótulo>
<asp:Label id="Label2" style="Z-INDEX: 107; LEFT: 333px; POSITION: absoluto; TOP: 274px" runat="server" Width="83px" Height="21px">Endereço de e-mail:< /asp:Rótulo>
<asp:Button id="btnAdd" style="Z-INDEX: 104; ESQUERDA: 298px; POSIÇÃO: absoluta; SUPERIOR: 324px" runat="servidor" Text="Add"></asp:Button>
<asp:Button id="btnDelete" style="Z-INDEX: 103; ESQUERDA: 199px; POSIÇÃO: absoluta; SUPERIOR: 324px" runat="servidor" Text="Delete"></asp:Button>
<asp:Button id="btnChange" style="Z-INDEX: 102; ESQUERDA: 102px; POSIÇÃO: absoluta; SUPERIOR: 382px" runat="servidor" Text="Modificar"></asp:Button>
<asp:Button id="btnQuery" style="Z-INDEX: 101; ESQUERDA: 101px; POSIÇÃO: absoluta; SUPERIOR: 324px" runat="servidor" Text="Query"></asp:Button>
<asp:DropDownList id="ddlName" style="Z-INDEX: 105; ESQUERDA: 210px; POSIÇÃO: absoluta; SUPERIOR: 274px" runat="servidor" Largura="95px" Altura="78px"></asp: Lista suspensa>
<asp:Label id="Label1" style="Z-INDEX: 106; LEFT: 100px; POSITION: absoluto; TOP: 274px" runat="server" Width="83px" Height="21px">Nome:</ asp:Rótulo>
<asp:Label id="lbEmail" style="Z-INDEX: 109; ESQUERDA: 459px; POSIÇÃO: absoluta; SUPERIOR: 274px" runat="servidor" Width="231px"></asp:Label>
<asp:TextBox id="tbNewMail" style="Z-INDEX: 110; ESQUERDA: 330px; POSIÇÃO: absoluta; SUPERIOR: 381px" runat="servidor" Largura="208px" Altura="26px"></asp: TextBox></FONT>
</form>
</body>
</HTML>Arquivo XML dbGuest.xml
<?xml version="1.0" autônomo="sim"?>
<dbConvidado>
<Usuário>
<Nome>aaa</Nome>
<Cidade>Xangai</Cidade>
<E-mail>[email protected]</E-mail>
<Mensagem>ok</Mensagem>
<STime>2004-07-12T00:00:00.0000000+08:00</STime>
</Usuário>
<Usuário>
<Nome>shaoazhd</Nome>
<Cidade>Pequim</Cidade>
<E-mail>[email protected]</E-mail>
<Mensagem>afsa</Mensagem>
<STime>12/07/2004 15:07:39</STime>
</Usuário>
<Usuário>
<Nome>Guset</Nome>
<Cidade>Xangai</Cidade>
<E-mail>[email protected]</E-mail>
</Usuário>
<Usuário>
<Nome>Guset</Nome>
<Cidade>Xangai</Cidade>
<E-mail>[email protected]</E-mail>
</Usuário>
</dbGuest>usando Sistema;
usando System.Collections;
usando System.ComponentModel;
usando System.Data;
usando System.Drawing;
usando System.Web;
usando System.Web.SessionState;
usando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.HtmlControls;
usando System.Xml;
usando System.Xml.XPath;
namespace DsAndXML.OpXMLFile
{
/**//// <resumo>
/// Descrição resumida de Main.
/// </sumário>
classe pública Principal: System.Web.UI.Page
{
System.Web.UI.WebControls.Button protegido btnQuery;
System.Web.UI.WebControls.Button protegido btnChange;
System.Web.UI.WebControls.Button protegido btnDelete;
System.Web.UI.WebControls.Button protegido btnAdd;
System.Web.UI.WebControls.DropDownList protegido ddlName;
System.Web.UI.WebControls.Label Label1 protegido;
System.Web.UI.WebControls.Label Label2 protegido;
protegido System.Web.UI.WebControls.Label lbEmail;
System.Web.UI.WebControls.TextBox protegido tbNewMail;
System.Web.UI.WebControls.Label Label3 protegido;
System.Web.UI.WebControls.DataGrid protegido dgShow;
private void Page_Load (remetente do objeto, System.EventArgs e)
{
//Coloque aqui o código do usuário para inicializar a página
if(!IsPostBack)
Vincular();
}
ligação vazia privada ()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(".\db\dbGuest.xml"));
dgShow.DataSource = ds.Tables[0].DefaultView;
dgShow.DataBind();
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList elemList = doc.GetElementsByTagName("Nome");
ddlName.Items.Clear();
for(int i=0;i<elemList.Count;i++)
ddlName.Items.Add(elemList[i].InnerXml);
}
Código gerado pelo Web Form Designer#region Código gerado pelo Web Form Designer
substituir void protegido OnInit (EventArgs e)
{
//
// CODEGEN: Esta chamada é exigida pelo designer de Web Forms do ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}
/**//// <resumo>
/// O Designer suporta métodos necessários - não use o editor de código para modificar
/// O conteúdo deste método.
/// </sumário>
privado vazio InitializeComponent()
{
this.btnQuery.Click += new System.EventHandler(this.btnQuery_Click);
this.btnChange.Click += new System.EventHandler(this.btnChange_Click);
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
this.Load += new System.EventHandler(this.Page_Load })
;
#endregion
private void btnQuery_Click(objeto remetente, System.EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(".\db\dbGuest.xml"));
lbEmail.Text = doc.SelectSingleNode("//User[Nome='"+ddlName.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText;
}
private void btnChange_Click(objeto remetente, System.EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList nodeList=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;//Obtém todos os nós filhos do nó dbGuest
foreach(XmlNode xn em nodeList) // Percorre todos os nós filhos
{
XmlElement xe=(XmlElement)xn;//Converte o tipo de subnó para o tipo XmlElement
Nó XmlNodeList = xe.GetElementsByTagName("Nome");
if(nó.Contagem>0)
{
if(node[0].InnerText==ddlName.SelectedItem.Text)
{
XmlNodeList nls=xe.ChildNodes;//Continue para obter todos os nós filhos do nó filho xe
foreach(XmlNode xn1 em nls)//Traverse
{
XmlElement xe2=(XmlElement)xn1;//Tipo de conversão
if(xe2.Name=="Email")//Se encontrado
{
xe2.InnerText=tbNewMail.Text;//Modificar
break; //Basta encontrá-lo e sair.
}
}
quebrar;
}
}
}
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
Vincular();
}
private void btnDelete_Click(objeto remetente, System.EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;
foreach(XmlNode xn em xnl)
{
XmlElement xe=(XmlElement)xn;
Nó XmlNodeList = xe.GetElementsByTagName("Nome");
if(nó.Contagem>0)
{
if(node[0].InnerText==ddlName.SelectedItem.Text)
xe.RemoveAll();//Exclui todo o conteúdo do nó
quebrar;
}
}
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
Vincular();
}
private void btnAdd_Click(objeto remetente, System.EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNode root=xmlDoc.SelectSingleNode("dbGuest");//Encontrar <dbGuest>
XmlElement xe1=xmlDoc.CreateElement("User");//Cria um nó <User>
XmlElement xesub1=xmlDoc.CreateElement("Nome");
xesub1.InnerText="Guset";//Definir nó de texto
xe1.AppendChild(xesub1);//Adicionar ao nó <Usuário>
XmlElement xesub2=xmlDoc.CreateElement("Cidade");
xesub2.InnerText="Xangai";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("E-mail");
xesub3.InnerText=" [email protected] ";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//Adicionar ao nó <dbGuest>
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
Vincular();
}
}
}
http://www.cnblogs.com/skylaugh/archive/2006/12/18/595634.html