Làm th? nào đ?: Th?c hi?n truy v?n XPath b?ng cách s? d?ng các l?p h?c System.Xml.XPath

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 317069 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t-by-step này ch?ng t? làm th? nào đ? s? d?ng các l?p h?c trong các System.xml.XPath không gian tên đ? th?c hi?n truy v?n XPath trong.Các ?ng d?ng NET.

Khám phá không gian tên System.Xml.XPath

Các System.xml.XPath không gian tên ch?a XPath phân tích cú pháp và các công c? đánh giá c?a các.NET Framework. Các System.xml.XPath không gian tên h? tr? khuy?n ngh? phiên b?n 1.0 XML đư?ng d?n ngôn ng? (XPath) c?a World Wide Web Consortium (W3C). Đ? bi?t thêm chi ti?t v? các khuy?n ngh? XPath, truy c?p vào W3C Web site sau:Các System.xml.XPath không gian tên c?ng có các l?p h?c sau đây đư?c t?i ưu hóa đ? th?c hi?n truy v?n XPath và đi?u hư?ng resultsets t?o l?p tr?nh:
  • XPathDocument: M?t hi?u su?t cao, b? nh? cache ch?-đ?c cho x? l? tài li?u XML và su?i. XPathDocument là t?i ưu cho ch? bi?n Extensible Stylesheet ngôn ng? chuy?n đ?i (XSLT) và cho mô h?nh d? li?u XPath. XPathDocument s? d?ng mô h?nh đ?i tư?ng tài li?u (DOM)-d?a trên phân tích m?u (t?i m? ngu?n XML thành m?t c?u trúc cây trong b? nh?) nhưng không không th?c hi?n các giao di?n c?n thi?t đ? chèn, đ? s?a đ?i ho?c xóa các nút trong m?t d?ng hay tài li?u Extensible Markup Language (XML).
  • XPathNavigator: L?p này d?a trên mô h?nh d? li?u XPath. XPathNavigator cung c?p các phương pháp c?n thi?t đ? b?n có th? th?c hi?n truy v?n XPath đ?i v?i d? li?u XML đư?c n?p vào m?t XPathDocument. XPathNavigator instantiated b?ng cách s? d?ng các CreateNavigator phương pháp c?a m?t XPathDocument đ?i tư?ng. B?n c?ng có th? dùng XPathNavigator biên d?ch th?c hi?n thư?ng xuyên bi?u th?c truy v?n XPath và t?o ra m?t System.xml.XPath.XPathExpression đ?i tư?ng đóng gói các truy v?n biên d?ch.
  • XPathNodeIterator: Cung c?p m?t iterator ch? chuy?n ti?p, ch?-đ?c. Khi b?n s? d?ng các Ch?n phương pháp c?a m?t XPathNavigator đ?i tư?ng đ? th?c thi m?t truy v?n XPath, m?t th? hi?n c?a XPathNodeIterator đư?c t?o ra. B?n có th? s? d?ng XPathNodeIterator đi?u hư?ng resultset đư?c t?o ra b?i truy v?n XPath.
  • XPathExpression: Đóng gói m?t bi?u th?c truy v?n XPath biên d?ch. B?n ph?i biên d?ch m?t bi?u th?c truy v?n XPath trư?c khi b?n có th? th?c thi các bi?u th?c truy v?n. M?t bi?u hi?n XPath biên d?ch có cú pháp đư?c xác minh đ? phù h?p v?i đ?c t? c?a W3C XPath Query Language. M?t cu?c g?i đ?n các Biên d?ch phương pháp c?a m?t XPathNavigator đ?i tư?ng tr? v? các XPathExpression l?p h?c. Thông thư?ng, b?n s? d?ng XPathExpression cung c?p m?t bi?u th?c truy v?n XPath t?o trong m?t cu?c g?i đ?n các Ch?n phương pháp c?a m?t XPathNavigator đ?i tư?ng.
  • XPathException: The.NET Framework ngo?i l? đư?c t?o ra khi m?t l?i x?y ra trong khi x? l? m?t bi?u th?c truy v?n XPath. Các Ch?n phương pháp và các Biên d?ch phương pháp c?a các XPathNavigator l?p có th? nâng cao XPathException.

T?o tài li?u XML m?u

Đ? t?o ra hai tài li?u XML m?u đ? s? d?ng v?i các ti?p theo.NET m?u m?, làm theo các bư?c sau:
  1. S? d?ng Notepad ho?c m?t tr?nh so?n th?o văn b?n tương t? như dán đo?n m? sau trong m?t tài li?u XML m?i đư?c đ?t tên Books.xml. Lưu tài li?u trong thư m?c g?c trên đ?a c?ng c?a b?n.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. S? d?ng Notepad ho?c m?t tr?nh so?n th?o văn b?n tương t? như dán đo?n m? sau trong m?t tài li?u XML m?i đư?c đ?t tên DotNetBooks.xml. Lưu tài li?u trong thư m?c g?c trên đ?a c?ng c?a b?n.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

T?o m?t Visual Basic.D? án NET

  1. B?t đ?u Visual Studio.NET, và sau đó t?o ra m?t m?i Visual Basic.D? án ?ng d?ng Windows NET.
  2. Kéo hai Nút đi?u khi?n t? h?p công c? đ? Form1.vb.
  3. Dán đo?n m? sau trong các Click_Event th? t?c c?a nút l?nh đ?u tiên:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. Đ?c b?nh lu?n n?i tuy?n đ? hi?u các ch?c năng c?a các m?. Chú ? c? th? như th? nào m? instantiates và s? d?ng đ?i tư?ng s? ki?n v? m?i ngư?i trong s? các l?p h?c trong các System.xml.XPath không gian tên. Lưu ? r?ng m?t chu?i ch? đ?nh tham s? bi?u th?c truy v?n XPath trong các cu?c g?i đ?n các Ch?n phương pháp c?a các XPathNavigator đ?i tư?ng.
  5. Dán đo?n m? sau trong các Click_Event th? t?c c?a nút l?nh th? hai:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. Đ?c b?nh lu?n n?i tuy?n đ? hi?u các ch?c năng c?a các m?. Ph?i c? th? quan tâm đ?n cách m?u m? instantiates các XPathExpression đ?i tư?ng l?n đ?u tiên (đ?i v?i Books.xml), và sau đó reuses đ?i tư?ng khi truy v?n XPath th?c hi?n m?t l?n th? hai (đ?i v?i DotNetBooks.xml).

Ki?m tra d? án

  1. Lưu các thay đ?i Visual BASIC.NET d? án, và sau đó th?c hi?n các d? án.
  2. Khi các h?nh th?c xu?t hi?n, nh?p vào nút l?nh đ?u tiên đ? th?c thi m? có s? d?ng m?t chu?i ch? ra bi?u th?c truy v?n XPath. Đ?u ra c?a truy v?n XPath đ? ch? ra đ?i v?i Books.xml xu?t hi?n như sau:
    XML Step by Step
    Developing XML solutions
    					
  3. Nh?p vào nút l?nh th? hai đ? th?c thi m? có s? d?ng m?t XPathExpression đ?i tư?ng đ? ch? đ?nh bi?u th?c truy v?n XPath. Đ?u ra c?a truy v?n XPath đ? ch? ra đ?i v?i Books.xml và DotNetBooks.xml s? xu?t hi?n như sau:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Thu?c tính

ID c?a bài: 317069 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
T? khóa: 
kbhowtomaster kbmt KB317069 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:317069

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com