1. 다음과 같은 XML 파일(bookstore.xml)이 있는 것으로 알려져 있습니다.
<?xml version="1.0" 인코딩="gb2312"?>
<서점>
<도서 장르="판타지" ISBN="2-3631-4">
<title>오베론의 유산</title>
<author>코레츠, 에바</author>
<가격>5.95</가격>
</book>
</서점>
1. <book> 노드를 <bookstore> 노드에 삽입합니다.
XmlDocument xmlDoc=new 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("제목");
xesub1.InnerText="초보자부터 능숙한 CS";//텍스트 노드 설정
xe1.AppendChild(xesub1);//<book> 노드에 추가
XmlElement xesub2=xmlDoc.CreateElement("작성자");
xesub2.InnerText="호우지에";
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" 인코딩="gb2312"?>
<서점>
<도서 장르="판타지" ISBN="2-3631-4">
<title>오베론의 유산</title>
<author>코레츠, 에바</author>
<가격>5.95</가격>
</book>
<도서 장르="이잔홍" ISBN="2-3631-4">
<title>엔트리부터 마스터까지 CS</title>
<author>호우지에</author>
<가격>58.3</가격>
</book>
</서점>
2. 노드 수정: 장르 속성 값이 "Li Zanhong"인 노드의 장르 값을 "updateLi Zanhong"으로 변경하고, 이 노드의 하위 노드 <author> 텍스트를 "Ya Sheng"으로 수정합니다.
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//bookstore 노드의 모든 하위 노드 가져오기
foreach(XmlNode xn in nodeList)//모든 하위 노드 탐색
{
XmlElement xe=(XmlElement)xn;//하위 노드 유형을 XmlElement 유형으로 변환
if(xe.GetAttribute("genre")=="리잔홍")//장르 속성값이 "리잔홍"인 경우
{
xe.SetAttribute("genre","update Li Zanhong");//속성을 "update Li Zanhong"으로 수정합니다.
XmlNodeList nls=xe.ChildNodes;//계속해서 xe 하위 노드의 모든 하위 노드를 가져옵니다.
foreach(nls의 XmlNode xn1)//트래버스
{
XmlElement xe2=(XmlElement)xn1;//변환 유형
if(xe2.Name=="author")//발견된 경우
{
xe2.InnerText="Yasheng";//수정
break;//그냥 찾아서 종료하세요.
}
}
부서지다;
}
}
xmlDoc.Save("bookstore.xml");//저장.
//===================
최종 결과는 다음과 같습니다.
<?xml version="1.0" 인코딩="gb2312"?>
<서점>
<도서 장르="판타지" ISBN="2-3631-4">
<title>오베론의 유산</title>
<author>코레츠, 에바</author>
<가격>5.95</가격>
</book>
<도서 장르="업데이트 이잔홍" ISBN="2-3631-4">
<title>엔트리부터 마스터까지 CS</title>
<author>폭행</author>
<가격>58.3</가격>
</book>
</서점>
3. <book Genre="fantasy" ISBN="2-3631-4"> 노드의 장르 속성을 삭제하고, <book Genre="update Li Zanhong" ISBN="2-3631-4"> 노드를 삭제합니다.
XmlNodeList xnl=xmlDoc.SelectSingleNode("서점").ChildNodes;
foreach(xnl의 XmlNode xn)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="판타지")
{
xe.RemoveAttribute("genre");//장르 속성 삭제
}
else if(xe.GetAttribute("genre")=="updateLi Zanhong")
{
xe.RemoveAll();//노드의 모든 내용을 삭제합니다.
}
}
xmlDoc.Save("bookstore.xml");
//=====================
최종 결과는 다음과 같습니다.
<?xml version="1.0" 인코딩="gb2312"?>
<서점>
<도서 ISBN="2-3631-4">
<title>오베론의 유산</title>
<author>코레츠, 에바</author>
<가격>5.95</가격>
</book>
<책>
</book>
</bookstore>
4. 모든 데이터를 표시합니다.
XmlNode xn=xmlDoc.SelectSingleNode("서점");
XmlNodeList xnl=xn.ChildNodes;
foreach(xnl의 XmlNode xnf)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//속성값 표시
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf1=xe.ChildNodes;
foreach(xnf1의 XmlNode xn2)
{
Console.WriteLine(xn2.InnerText);//하위 노드 텍스트 표시
}
}
참고용으로 남겨주세요, 원주소 http://blog.yesky.com/75/richsee/1211075.shtml
2 프론트엔드 코드 : html
<%@ 페이지 언어="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="서버">
<FONT 얼굴="宋体">
<asp:DataGrid id="dgShow" style="Z-INDEX: 100; 왼쪽: 113px; 위치: 절대; TOP: 32px" runat="server" Width="480px" Height="178px"></asp: 데이터그리드>
<asp:Label id="Label3" style="Z-INDEX: 111; 왼쪽: 187px; POSITION: 절대; TOP: 383px" runat="server" Width="120px" Height="21px">새 이메일 주소: </asp:레이블>
<asp:Label id="Label2" style="Z-INDEX: 107; 왼쪽: 333px; POSITION: 절대; TOP: 274px" runat="server" Width="83px" Height="21px">이메일 주소:< /asp:레이블>
<asp:Button id="btnAdd" style="Z-INDEX: 104; 왼쪽: 298px; 위치: 절대; TOP: 324px" runat="server" Text="추가"></asp:Button>
<asp:Button id="btnDelete" style="Z-INDEX: 103; 왼쪽: 199px; 위치: 절대; TOP: 324px" runat="server" Text="Delete"></asp:Button>
<asp:Button id="btnChange" style="Z-INDEX: 102; 왼쪽: 102px; 위치: 절대; TOP: 382px" runat="server" Text="Modify"></asp:Button>
<asp:Button id="btnQuery" style="Z-INDEX: 101; 왼쪽: 101px; POSITION: 절대; TOP: 324px" runat="server" Text="Query"></asp:Button>
<asp:DropDownList id="ddlName" style="Z-INDEX: 105; 왼쪽: 210px; 위치: 절대; TOP: 274px" runat="server" Width="95px" Height="78px"></asp: 드롭다운목록>
<asp:Label id="Label1" style="Z-INDEX: 106; 왼쪽: 100px; 위치: 절대; TOP: 274px" runat="server" Width="83px" Height="21px">이름:</ asp:레이블>
<asp:Label id="lbEmail" style="Z-INDEX: 109; 왼쪽: 459px; 위치: 절대; TOP: 274px" runat="server" Width="231px"></asp:Label>
<asp:TextBox id="tbNewMail" style="Z-INDEX: 110; 왼쪽: 330px; 위치: 절대; TOP: 381px" runat="server" Width="208px" Height="26px"></asp: 텍스트박스></FONT>
</form>
</body>
</HTML>XML 파일 dbGuest.xml
<?xml version="1.0" 독립형="예"?>
<dbGuest>
<사용자>
<이름>아아아</이름>
<City>상하이</City>
<이메일>[email protected]</이메일>
<Message>알았어</Message>
<S시간>2004-07-12T00:00:00.0000000+08:00</S시간>
</사용자>
<사용자>
<Name>샤오아즈드</Name>
<City>베이징</City>
<이메일>[email protected]</이메일>
<Message>afsa</Message>
<S시간>2004-7-12 15:07:39</S시간>
</사용자>
<사용자>
<Name>거셋</Name>
<City>상하이</City>
<Email>[email protected]</Email>
</사용자>
<사용자>
<Name>거셋</Name>
<City>상하이</City>
<이메일>[email protected]</이메일>
</사용자>
</dbGuest>시스템 사용;
System.Collections 사용;
System.ComponentModel 사용;
System.Data 사용;
System.드로잉 사용;
System.Web 사용;
System.Web.SessionState 사용;
System.Web.UI 사용;
System.Web.UI.WebControls 사용;
System.Web.UI.HtmlControls 사용;
System.Xml 사용;
System.Xml.XPath 사용;
네임스페이스 DsAndXML.OpXMLFile
{
/**//// <요약>
/// Main에 대한 요약 설명입니다.
/// </summary>
공개 클래스 메인 : 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)
{
//페이지를 초기화하려면 여기에 사용자 코드를 입력하세요.
if(!IsPostBack)
바인딩()
}
개인 무효 바인딩()
{
DataSet ds = 새로운 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("이름");
ddlName.Items.Clear();
for(int i=0;i<elemList.Count;i++)
ddlName.Items.Add(elemList[i].InnerXml);
}
웹 양식 디자이너 생성 코드#region 웹 양식 디자이너 생성 코드
보호된 void OnInit(EventArgs e) 재정의
{
//
// CODEGEN: 이 호출은 ASP.NET Web Forms 디자이너에 필요합니다.
//
초기화구성요소();
base.OnInit(e);
}
/**//// <요약>
/// 디자이너는 필수 메서드를 지원합니다. 코드 편집기를 사용하여 수정하지 마세요.
/// 이 메소드의 내용입니다.
/// </summary>
개인 무효 초기화 구성 요소()
{
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(개체 전송자, System.EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(".\db\dbGuest.xml"));
lbEmail.Text = doc.SelectSingleNode("//User[Name='"+ddlName.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText;
}
개인 무효 btnChange_Click(개체 전송자, System.EventArgs e)
{
XmlDocument xmlDoc = new 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("이름");
if(노드.카운트>0)
{
if(노드[0].InnerText==ddlName.SelectedItem.Text)
{
XmlNodeList nls=xe.ChildNodes;//계속해서 xe 하위 노드의 모든 하위 노드를 가져옵니다.
foreach(nls의 XmlNode xn1)//트래버스
{
XmlElement xe2=(XmlElement)xn1;//변환 유형
if(xe2.Name=="이메일")//찾은 경우
{
xe2.InnerText=tbNewMail.Text;//수정
break;//그냥 찾아서 종료하세요.
}
}
부서지다;
}
}
}
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
묶다();
}
개인 무효 btnDelete_Click(개체 전송자, System.EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".\db\dbGuest.xml"));
XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;
foreach(xnl의 XmlNode xn)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList 노드 = xe.GetElementsByTagName("이름");
if(노드.카운트>0)
{
if(노드[0].InnerText==ddlName.SelectedItem.Text)
xe.RemoveAll();//노드의 모든 내용을 삭제합니다.
부서지다;
}
}
xmlDoc.Save(Server.MapPath(".\db\dbGuest.xml"));
묶다();
}
개인 무효 btnAdd_Click(개체 전송자, System.EventArgs e)
{
XmlDocument xmlDoc = new 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