1. Известно, что существует XML-файл (bookstore.xml) следующего вида:
<?xml version="1.0"coding="gb2312"?>
<книжный магазин>
<книга жанр="фэнтези" ISBN="2-3631-4">
<title>Наследие Оберона</title>
<author>Корец, Ева</author>
<price>5,95</price>
</книга>
</книжный магазин>
1. Вставьте узел <book> в узел <bookstore>:
XmlDocument xmlDoc=новый XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//Найти <книжный магазин>
XmlElement xe1=xmlDoc.CreateElement("book");//Создаем узел <book>
xe1.SetAttribute("genre","Li Zanhong");//Установить атрибут жанра узла
xe1.SetAttribute("ISBN","2-3631-4");//Установить атрибут ISBN узла
XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS от новичка до опытного";//Установить текстовые узлы
xe1.AppendChild(xesub1);//Добавить в узел <book>
XmlElement xesub2=xmlDoc.CreateElement("автор");
xesub2.InnerText="houjie";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("цена");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//Добавить в узел <bookstore>
xmlDoc.Save("bookstore.xml");
//================
Результат:
<?xml version="1.0"coding="gb2312"?>
<книжный магазин>
<книга жанр="фэнтези" ISBN="2-3631-4">
<title>Наследие Оберона</title>
<author>Корец, Ева</author>
<price>5,95</price>
</книга>
<book жанр="李zanhong" ISBN="2-3631-4">
<title>CS от записи до мастера</title>
<author>Ходжи</author>
<price>58,3</price>
</книга>
</книжный магазин>
2. Измените узел: измените значение жанра узла, значение атрибута жанра которого равно «Li Zanhong», на «updateLi Zanhong», а также измените текст дочернего узла <author> этого узла на «Ya Sheng».
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//Получить все дочерние узлы узла книжного магазина
foreach(XmlNode xn in nodeList)//Обходим все дочерние узлы
{
XmlElement xe=(XmlElement)xn;//Преобразуем тип подузла в тип XmlElement
if(xe.GetAttribute("genre")=="Ли Цзаньхун")//Если значение атрибута жанра - "Ли Цзаньхун"
{
xe.SetAttribute("genre","update Li Zanhong");//Измените атрибут на "обновить Ли Цзаньхуна"
XmlNodeList nls=xe.ChildNodes;//Продолжить получение всех дочерних узлов дочернего узла xe
foreach(XmlNode xn1 в nls)//Обход
{
XmlElement xe2=(XmlElement)xn1;//Тип преобразования
if(xe2.Name=="автор")//Если найден
{
xe2.InnerText="Яшенг";//Изменить
перерыв; //Просто найдите его и выйдите.
}
}
перерыв;
}
}
xmlDoc.Save("bookstore.xml");//Сохранить.
//==================
Конечный результат:
<?xml version="1.0"coding="gb2312"?>
<книжный магазин>
<книга жанр="фэнтези" ISBN="2-3631-4">
<title>Наследие Оберона</title>
<author>Корец, Ева</author>
<price>5,95</price>
</книга>
<book жанр="обновление李zanhong" ISBN="2-3631-4">
<title>CS от записи до мастера</title>
<author>Нападение</author>
<price>58,3</price>
</книга>
</книжный магазин>
3. Удалите атрибут жанра узла <book жанр="fantasy" ISBN="2-3631-4"> и удалите узел <book жанр="update Li Zanhong" ISBN="2-3631-4">.
XmlNodeList xnl=xmlDoc.SelectSingleNode("книжный магазин").ChildNodes;
foreach (XmlNode xn в xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("жанр")=="фэнтези")
{
xe.RemoveAttribute("genre");//Удалить атрибут жанра
}
else if(xe.GetAttribute("genre")=="updateLi Zanhong")
{
xe.RemoveAll();//Удалить все содержимое узла
}
}
xmlDoc.Save("bookstore.xml");
//====================
Конечный результат:
<?xml version="1.0"coding="gb2312"?>
<книжный магазин>
<книга ISBN="2-3631-4">
<title>Наследие Оберона</title>
<author>Корец, Ева</author>
<price>5,95</price>
</книга>
<книга>
</книга>
</bookstore>
4. Отобразите все данные.
XmlNode xn=xmlDoc.SelectSingleNode("книжный магазин");
XmlNodeList xnl=xn.ChildNodes;
foreach (XmlNode xnf в xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//Отображение значения атрибута
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf1=xe.ChildNodes;
Еогеасп (XmlNode xn2 в xnf1)
{
Console.WriteLine(xn2.InnerText);//Отображение текста дочернего узла
}
}
Оставьте его для справки, исходный адрес http://blog.yesky.com/75/richsee/1211075.shtml.
2 Код внешнего интерфейса: 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>
<ГОЛОВКА>
<title>Основное</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>
<body MS_POSITIONING="GridLayout">
<form id="Main" Method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="dgShow" style="Z-INDEX: 100; СЛЕВА: 113 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 32 пикселя" runat="server" Width="480px" Height="178px"></asp: DataGrid>
<asp:Label id="Label3" style="Z-INDEX: 111; СЛЕВА: 187 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 383 пикселя" runat="server" Width="120px" Height="21px">Новый адрес электронной почты: </asp:Метка>
<asp:Label id="Label2" style="Z-INDEX: 107; СЛЕВА: 333 пикселя; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 274 пикселя" runat="server" Width="83px" Height="21px">Адрес электронной почты:< /asp:Метка>
<asp:Button id="btnAdd" style="Z-INDEX: 104; СЛЕВА: 298 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 324 пикселей" runat="server" Text="Add"></asp:Button>
<asp:Button id="btnDelete" style="Z-INDEX: 103; СЛЕВА: 199 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 324 пикселей" runat="server" Text="Delete"></asp:Button>
<asp:Button id="btnChange" style="Z-INDEX: 102; СЛЕВА: 102 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 382 пикселей" runat="server" Text="Modify"></asp:Button>
<asp:Button id="btnQuery" style="Z-INDEX: 101; СЛЕВА: 101 пиксель; ПОЛОЖЕНИЕ: абсолютное; ВЕРХУ: 324 пикселя" runat="server" Text="Query"></asp:Button>
<asp:DropDownList id="ddlName" style="Z-INDEX: 105; СЛЕВА: 210 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 274 пикселей" runat="server" Width="95px" Height="78px"></asp: Выпадающий список>
<asp:Label id="Label1" style="Z-INDEX: 106; LEFT: 100px; POSITION: абсолютное; TOP: 274px" runat="server" Width="83px" Height="21px">Имя:</ asp:Метка>
<asp:Label id="lbEmail" style="Z-INDEX: 109; СЛЕВА: 459 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 274 пикселей" runat="server" Width="231px"></asp:Label>
<asp:TextBox id="tbNewMail" style="Z-INDEX: 110; СЛЕВА: 330 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 381 пикселей" runat="server" Width="208px" Height="26px"></asp: Текстовое поле></FONT>
</форма>
</тело>
</HTML>XML-файл dbGuest.xml
<?xml version="1.0" Standalone="да"?>
<dbGuest>
<Пользователь>
<Имя>ааа</Имя>
<Город>Шанхай</Город>
<Электронная почта>[email protected]</Email>
<Сообщение>ок</Сообщение>
<STime>2004-07-12T00:00:00.0000000+08:00</STime>
</Пользователь>
<Пользователь>
<Имя>шаоажд</Name>
<Город>Пекин</Город>
<Email>[email protected]</Email>
<Message>afsa</Message>
<STime>12 июля 2004 15:07:39</STime>
</Пользователь>
<Пользователь>
<Имя>Гусет</Name>
<Город>Шанхай</Город>
<Электронная почта>[email protected]</Email>
</Пользователь>
<Пользователь>
<Имя>Гусет</Name>
<Город>Шанхай</Город>
<Email>[email protected]</Email>
</Пользователь>
</dbGuest>с использованием системы;
использование System.Collections;
использование System.ComponentModel;
использование System.Data;
использование System.Drawing;
использование System.Web;
использование System.Web.SessionState;
использование System.Web.UI;
использование System.Web.UI.WebControls;
использование System.Web.UI.HtmlControls;
использование System.Xml;
используя System.Xml.XPath;
пространство имен DsAndXML.OpXMLFile
{
/**//// <сводка>
/// Краткое описание Main.
/// </сводка>
общедоступный класс Main: System.Web.UI.Page
{
защищенный System.Web.UI.WebControls.Button btnQuery;
защищенный System.Web.UI.WebControls.Button btnChange;
защищенный System.Web.UI.WebControls.Button btnDelete;
защищенный System.Web.UI.WebControls.Button btnAdd;
защищенный System.Web.UI.WebControls.DropDownList ddlName;
защищенный System.Web.UI.WebControls.Label Label1;
защищенный System.Web.UI.WebControls.Label Label2;
защищенный System.Web.UI.WebControls.Label lbEmail;
защищенный System.Web.UI.WebControls.TextBox tbNewMail;
защищенный System.Web.UI.WebControls.Label Label3;
защищенный System.Web.UI.WebControls.DataGrid dgShow;
частная пустота Page_Load (отправитель объекта, System.EventArgs e)
{
//Поместите сюда пользовательский код для инициализации страницы
если(!Испостбак)
Связывать();
}
частная пустота Bind()
{
DataSet ds = новый DataSet();
ds.ReadXml(Server.MapPath(".\db\dbGuest.xml"));
dgShow.DataSource = ds.Tables[0].DefaultView;
dgShow.DataBind();
Документ XmlDocument = новый XmlDocument();
doc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList elemList = doc.GetElementsByTagName("Имя");
ddlName.Items.Clear();
for(int i=0;i<elemList.Count;i++)
ddlName.Items.Add(elemList[i].InnerXml);
}
Код, сгенерированный конструктором веб-форм#регион Код, сгенерированный конструктором веб-форм
переопределить защищенную пустоту OnInit (EventArgs e)
{
//
// CODEGEN: этот вызов необходим разработчику веб-форм ASP.NET.
//
ИнициализироватьКомпонент();
base.OnInit(е);
}
/**//// <сводка>
/// Конструктор поддерживает необходимые методы — не используйте редактор кода для изменения
/// Содержимое этого метода.
/// </сводка>
частная пустота InitializeComponent()
{
this.btnQuery.Click += новый System.EventHandler(this.btnQuery_Click);
this.btnChange.Click += новый System.EventHandler(this.btnChange_Click);
this.btnDelete.Click += новый System.EventHandler(this.btnDelete_Click);
this.btnAdd.Click += новый System.EventHandler(this.btnAdd_Click);
this.Load += новый System.EventHandler(this.Page_Load })
;
#endregion
Private void btnQuery_Click(отправитель объекта, System.EventArgs e)
{
Документ XmlDocument = новый XmlDocument();
doc.Load(Server.MapPath(".\db\dbGuest.xml"));
lbEmail.Text = doc.SelectSingleNode("//User[Name='"+ddlName.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText;
}
Private void btnChange_Click (отправитель объекта, System.EventArgs e)
{
XmlDocument xmlDoc = новый XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList nodeList=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;//Получаем все дочерние узлы узла dbGuest
foreach(XmlNode xn in nodeList)//Обходим все дочерние узлы
{
XmlElement xe=(XmlElement)xn;//Преобразуем тип подузла в тип XmlElement
Узел XmlNodeList = xe.GetElementsByTagName("Имя");
если (узел.Count>0)
{
if(node[0].InnerText==ddlName.SelectedItem.Text)
{
XmlNodeList nls=xe.ChildNodes;//Продолжить получение всех дочерних узлов дочернего узла xe
foreach(XmlNode xn1 в nls)//Обход
{
XmlElement xe2=(XmlElement)xn1;//Тип преобразования
if(xe2.Name=="Электронная почта")//Если найдено
{
xe2.InnerText=tbNewMail.Text;//Изменить
перерыв; //Просто найдите его и выйдите.
}
}
перерыв;
}
}
}
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
Связывать();
}
Private void btnDelete_Click (отправитель объекта, System.EventArgs e)
{
XmlDocument xmlDoc = новый XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;
foreach (XmlNode xn в xnl)
{
XmlElement xe=(XmlElement)xn;
Узел XmlNodeList = xe.GetElementsByTagName("Имя");
если (узел.Count>0)
{
if(node[0].InnerText==ddlName.SelectedItem.Text)
xe.RemoveAll();//Удалить все содержимое узла
перерыв;
}
}
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
Связывать();
}
Private void btnAdd_Click (отправитель объекта, System.EventArgs e)
{
XmlDocument xmlDoc = новый XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNode root=xmlDoc.SelectSingleNode("dbGuest");//Найти <dbGuest>
XmlElement xe1=xmlDoc.CreateElement("User");//Создаем узел <User>
XmlElement xesub1=xmlDoc.CreateElement("Имя");
xesub1.InnerText="Guset";//Установить текстовый узел
xe1.AppendChild(xesub1);//Добавить в узел <User>
XmlElement xesub2=xmlDoc.CreateElement("Город");
xesub2.InnerText="Шанхай";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("Электронная почта");
xesub3.InnerText=" [email protected] ";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//Добавить в узел <dbGuest>
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
Связывать();
}
}
}
http://www.cnblogs.com/skylaugh/archive/2006/12/18/595634.html