3 World Wide Web Consortium
2.2.1. Đọc và phân tích tài liệu XML
2.2.1.1. Sử dụng lớp XMLTextReader
Lớp XMLTextReader cung cấp một cursor được sử dụng để lấy đữ liệu từ
một tài liệu XML. Chúng ta khai báo như sau:
XmlTextReader myRdr =
new Xm1TextReader (Server.MapPath ("catalog2. xm1") ) ;
Khi một thể hiện được tạo ra, con trỏ cursor sẽ được đặt ở đầu tài liệu.
Chúng ta có thể sử dụng phương thức #ead() đề lấy.‹ñhững phần dữ liệu một cách tuần tự. Mỗi phần đữ liệu tương tự như mộf nút trong cây XML. Thuộc tính WodeType sẽ lẫy kiểu của phần dữ liệu, thuộc tính /zme sẽ lẫy tên của
nút, và Value sẽ lấy giá trị của nút. Vì thế, khi một phần đữ liệu được đọc, chúng ta có thể sử dụng câu lệnh sau đề hiện:thị tên, giá trị và kiểu của nút.
Response..Write (myRdr .NodeType. ToString ()
+" " + myRdr.Name + ":" + myRdr.Value) ;
Nếu muốn kiểm trá nút đó có thuộc tính hay không, chúng ta có thể sử dụng phương thức`H2s4#ibures. Nếu giá trị trả về của phương thức HasAfribufes làrue, chúng ta áp dụng phương thức MoveToAfribufe(i) đễ lặp qua các thuộc tính của nút.
i£ (myRdr.HasAttributes) {
for( int i¡ = 0; i< myRdr.AttributeCount-1;i++) {
myRdr.MoveToAttribute (1);
Response.Write (myRdr.NodeType.ToString()+";"+
SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư
myRdr.Name + "; " + myRdr.Value + "</br>"); }
myRdr .MoveToElement () ;
2.2.1.2. Sử dụng mô hình DOM
Bên cạnh XMLTextReader thì mô trường Visual Studio.NET cũng hỗ trợ mô hình DOM (Document Object Module) để đọc và trình bày nội dung của một tập tin XML. Việc sử dụng mô hình DOM sẽ thônế qua một số đối tượng
như XMLDocwment, XMLDatftaDocument. Khi một XMLDocument được tạo ra, nó tô chức nội dung của một tập tin XML thành một cây. Trong khi đối tượng XMLTextReader cung cấp một cúrsor:định vị theo một hướng, thì
XMLDocumenf cung cấp việc truy xúất nhanh và trực tiếp đến một nút. Tuy nhiên, việc sử đụng mô hình DOM rấttốn bộ nhớ đề lưu trữ thành một cây, và
thật sự sẽ khó khăn khi tài liệu XML có kích thước lớn.
Có nhiều cách khác nhau để tạo một đối tượng XMLDocumer. Sau đây
chúng ta sử dụng đối tượng XML TextReader để tạo một XMLDocument.
bprivate void Page Load(object sender, System.EventArgs e) {
1£(!Page.TIsPostBack) {
XmlDocument myDoc = new XmlDocument () ;
XmlTextReader myRdr = new
Xm1TextReader (Server .MapPath ("Catalog2.xm1") ) ;
myDoc.. Load (myRđr) ;
Session ("sessionDoc") = myDocz¿
//khi cây được tạo ra, chúng ta có thể hiển thị lênlistbox
//với thuộc tính InnerText của những node ProductName int i=0;
£or (i=0; 1<myDoc .DocumentElement .Chi 1dNodes .Count-1;1++)
SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư
{
1stProducts. Ttems .Add (myDoc..DocumentElement.
Chi1dNÑodes [i] .Chi1dNodes [1] .TnnerTexE) ; }
myRdr.Close ();