C v t o t i li u xml
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

Đọc và tạo tài liệu XML PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on
  • Presentation posted in: General

Đọc và tạo tài liệu XML. ThS. Trần Minh Triết. Giới thiệu. XmlReader và XmlWriter là 2 lớp ảo quan trọng nhất trong mô hình đối tượng XML của .NET Framework. XmlReader cung cấp các API để đọc tài liệu XML XmlWriter cung cấp các API để tạo ra các tài XML theo chuẩn của W3C

Download Presentation

Đọc và tạo tài liệu XML

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


C v t o t i li u xml

Đọc và tạo tài liệu XML

ThS. Trần Minh Triết


Gi i thi u

Giới thiệu

  • XmlReader và XmlWriter là 2 lớp ảo quan trọng nhất trong mô hình đối tượng XML của .NET Framework.

  • XmlReader cung cấp các API để đọc tài liệu XML

  • XmlWriter cung cấp các API để tạo ra các tài XML theo chuẩn của W3C

  • Microsoft áp dụng kết hợp ý tưởng của DOM và SAX trong việc thiết kế và xây dựng 2 lớp này

  • XmlReader và XmlWriter sử dụng mô hình stream để đọc/ghi từng phần của tài liệu XML


S d ng xmlreader v xmlwriter

Sử dụng XmlReader và XmlWriter

  • Do XmlReader và XmlWriter đều là abstract class nên khi sử dụng, cần phải dùng các lớp cụ thể kế thừa từ các lớp này

    • Sử dụng các lớp XmlTextReader, XmlNodeReader hay XslReaderkế thừa từ XmlReader

    • Sử dụng XmlTextWriter hay XmlNodeWriter kế thừa từ XmlWriter


Xmlreader

XmlReader

  • Lớp XmlReader:

    • Abstract class

    • Cung cấp chức năng đọc (read-only và forward-only) trên tài liệu XML.

  • Việc sử dụng XmlReader rất giống với DOM, cho phép đọc và xử lý lần lượt từng node


Xmlreader1

XmlReader

  • Ví dụ: đọc và duyệt qua từng node của tài liệu XML và xuất tên của các element trong tài liệu

    publicvoidDisplayElements( XmlReader reader )

    {

    /* read the next node in document order */

    while ( reader.Read() )

    {

    /* if this is an element node, display its name */

    Console.WriteLine( reader.Name );

    }

    }


Xmlreader2

XmlReader

  • XmlReader sử dụng một cursor để xác định node hiện tại đang được xử lý trong stream tài liệu

  • Các phương thức được cung cấp cho phép có thể duyệt qua lần lượt từng node theo chiều tiến (forward-only)

  • XmlReader cung cấp một số hàm để thao tác trên kiểu và giá trị của node hiện tại


C c c node

Đọc các node

  • Phương thức Read( ) là phương thức cơ sở của XmlReader để di chuyển cursor trong tài liệu XML

  • Mỗi lần gọi hàm Read( ), XmlReader sẽ di chuyển cursor sang node tiếp theo trong tài liệu cho đến khi hết stream

  • Khi hết stream, Read( ) sẽ trả về giá trị False.


C v t o t i li u xml

Ví dụ

<persons>

<person>

<firstname>Albert</firstname>

<lastname>Einstein</lastname>

</person>

<person>

<firstname>Niels</firstname>

<lastname>Bohr</lastname>

</person>

</persons>

persons

person

firstname

firstname

lastname

lastname

person

person

firstname

firstname

lastname

lastname

person

persons

while ( reader.Read() )

{

/* if this is an element node, display its name */

Console.WriteLine( reader.Name );

}


Th ng tin c a node

Thông tin của node

  • Với mỗi node đang được đọc, có thể lấy thông tin về giá trị và các thông tin liên quan đến node đó

  • Ví dụ:

    • Thuộc tính NodeType trả về kiểu node (tương tự DOM)

    • Thuộc tính Valuetrả về giá trị của node

  • XmlReader cung cấp các hàm trả về giá trị theo từng kiểu dữ liệu cụ thể (ReadInt16, ReadDouble, ReadString, …)


C v t o t i li u xml

Ví dụ

publicvoidDisplayNode( XmlReader node )

{

switch ( node.NodeType )

{

caseXmlNodeType.Element:

Console.Write( "<" + node.Name + ">" );

break;

caseXmlNodeType.Text:

Console.Write( node.Value );

break;

caseXmlNodeType.CDATA:

Console.Write( node.Value );

break;

caseXmlNodeType.ProcessingInstruction:

Console.Write( "< "+node.Name+" "+node.Value+" >" );

break;


C v t o t i li u xml

Ví dụ

caseXmlNodeType.Comment:

Console.Write( "<!--" + node.Value + "-->" );

break;

caseXmlNodeType.Document:

Console.Write( "< xml version='1.0' >" );

break;

caseXmlNodeType.Whitespace:

Console.Write( node.Value );

break;

caseXmlNodeType.SignificantWhitespace:

Console.Write( node.Value );

break;

caseXmlNodeType.EndTag:

Console.Write( "</" + node.Name + ">" );

break;

}

}


C c c attribute

Đọc các Attribute

  • Attribute là thành phần bên trong của element nên hàm Read( ) KHÔNG duyệt vào các node attribute!!!

  • Để truy cập các attribute của element hiện tại, sử dụng hàm GetAttribute( ).

  • Trong GetAttribute( ), có thể truy cập các attribute theo tên hay chỉ số

  • Ví dụ:

    for ( int = 0; i < node.AttributeCount; i++ )

    {

    Console.WriteLine( node.GetAttribute( i ) );

    }


C c c attribute1

Đọc các Attribute

  • XmlReader cung cấp các hàm để duyệt qua các attribute của node hiện tại.

    • MoveToAttribute( )

    • MoveToFirstAttribute( )

    • MoveToNextAttribute( )

  • Ví dụ:

    while ( node.MoveToNextAttribute() )

    {

    Console.Write( " " + node.Name + "=\""+node.Value+"\"" );

    }


Xmlwriter

XmlWriter

  • XmlWriter là abstract class cho phép tạo ra stream tài liệu theo định dạng XML của W3C

  • XmlWriter hỗ trợ việc tạo tài liệu XML tự động, ví dụ như đảm bảo việc đóng các tag của element đầy đủ, các giá trị của attribute được ghi nháy kép đầy đủ…

  • XmlWriter cung cấp các hàm để ghi dữ liệu có kiểu cụ thể (như WriteInt32( ), WriteDouble( ), WriteString( )…).


Xmlwriter1

XmlWriter

publicstaticvoidMain( String[] args )

{

/* Instantiates an XmlTextWriter that writes to the console */

XmlTextWriter writer = newXmlTextWriter( Console.Out );

/* Use indenting for readability */

writer.Formatting = Formatting.Indented;

writer.Indentation = 4;


Xmlwriter2

XmlWriter

/* Now write out our XML document */

writer.WriteStartDocument();

writer.WriteStartElement( "Persons" );

writer.WriteStartElement( "Person" );

writer.WriteStartElement( "Name" );

writer.WriteStartAttribute( null, "firstName", null );

writer.WriteString( "Albert" );

writer.WriteEndAttribute();

writer.WriteStartAttribute( null, "lastName", null );

writer.WriteString( "Einstein" );

writer.WriteEndAttribute();

writer.WriteEndElement();

writer.WriteEndElement();


Xmlwriter3

XmlWriter

writer.WriteStartElement( "Person" );

writer.WriteStartElement( "Name" );

writer.WriteStartAttribute( null, "firstName", null );

writer.WriteString( "Niels" );

writer.WriteEndAttribute();

writer.WriteStartAttribute( null, "lastName", null );

writer.WriteString( "Bohr" );

writer.WriteEndAttribute();

writer.WriteEndElement();

writer.WriteEndElement();

writer.WriteEndElement();

writer.WriteEndDocument();

/* Don't forget to close the writer */

writer.Close();

}


  • Login