Bagikan melalui


Menggunakan XPath dalam Penetapan Pesan

Anda dapat menggunakan fungsi xpath untuk menetapkan nilai XPath ke bagian pesan, atau untuk menetapkan nilai ke XPath yang merujuk ke bagian pesan. Untuk informasi selengkapnya tentang menetapkan bagian pada pesan dan pesan, lihat Membuat Pesan.

Nota

Untuk informasi selengkapnya tentang fungsi xpath, lihat dokumentasi pihak ketiga pada Xml Path Language (XPath).

Nota

Penggunaan fungsi xpath tidak terbatas pada penetapan pesan. Anda juga dapat menggunakannya dalam ekspresi apa pun, misalnya:

If ((System.Double) xpath(_RequestMessage.part, "number(//book[last()]/price)") == 75.00 && (System.Boolean) xpath(msgBoolean, "string(//boolean)") == false)...  

Nota

Jika Anda ingin menetapkan nilai ke string, gunakan fungsi string() XPath. Contohnya:

myString = xpath(msg, "string(/*/book[1]/title)");  

Nota

Mesin tidak sadar skema, sehingga Anda hanya dapat membaca nilai dari atau menulis nilai ke simpul yang ada dalam pesan yang berisi (jalur lengkap harus ada), atau mesin akan memunculkan pengecualian. Ini berlaku bahkan jika Anda memberikan nilai default.

Menetapkan ke XPath dalam bagian pesan

Pertimbangkan skema berikut:

<?xml version="1.0" encoding="utf-16"?>  
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:xs="http://www.w3.org/2001/XMLSchema">  
  <xs:element name="catalog">  
    <xs:complexType>  
      <xs:sequence>  
        <xs:element minOccurs="1" maxOccurs="unbounded" name="book">  
          <xs:complexType>  
            <xs:sequence>  
              <xs:element name="title" type="xs:string" />  
              <xs:element name="author">  
                <xs:complexType>  
                  <xs:sequence>  
                    <xs:element name="FirstName" type="xs:string" />  
                    <xs:element name="LastName" type="xs:string" />  
                  </xs:sequence>  
                </xs:complexType>  
              </xs:element>  
              <xs:element name="price" type="xs:string" />  
            </xs:sequence>  
            <xs:attribute name="country" type="xs:string" />  
          </xs:complexType>  
        </xs:element>  
      </xs:sequence>  
    </xs:complexType>  
  </xs:element>  
</xs:schema>  

Anda dapat menggunakan fungsi sebagai berikut untuk mengatur nilai pada instans dokumen dari jenis skema tersebut:

//assumes that a message named _ResponseMessage is already constructed  
_ResponseMessage.part = _RequestMessage.part;  
xpath(_ResponseMessage.part, "/*/book[1]/@country") = "USA";  
xpath(_ResponseMessage.part, "/*/book[1]/title") = "Legends";  
xpath(_ResponseMessage.part, "/*/book[1]/author/FirstName") = "A";  
xpath(_ResponseMessage.part, "/*/book[1]/author/LastName") = "B";  
xpath(_ResponseMessage.part, "/*/book[1]/price") = 50;  

Menetapkan ke bagian pesan dari XPath

//assumes that a message named objMessage is already constructed  
objMessage.BooleanPart = xpath("false()");  
objMessage.IntPart = xpath("100");  
objMessage.StringPart = xpath("'Hello'");  
objMessage.StringPart2 = xpath("'World'");  

Menggunakan XPath untuk menugaskan dari node dan kumpulan simpul

Anda juga dapat menggunakan XPath untuk menetapkan simpul XML dan set simpul ke elemen XML, kelas, atau pesan berbasis skema atau berbasis kelas.

Misalkan Anda memiliki kelas YANG dapat diserialisasi XML yang disebut Buku, dan pertimbangkan contoh berikut:

[Serializable]  
Class Book {...}  

Contoh Satu — pilih elemen buku keempat dari katalog, dan tetapkan ke variabel elemen XML:

myXmlElement = xpath(myMsg, "/catalog/book[3]");  

Contoh Dua — pilih elemen buku keempat dari katalog, dan konversikan menggunakan deserialisasi XML menjadi instans kelas Buku:

myBook = xpath(myMsg, "/catalog/book[3]");  

Contoh Tiga — pilih elemen buku keempat dari katalog, dan ubah menjadi pesan dengan jenis Buku.

myBookMsg = xpath(myMsg, "/catalog/book[3]");  

Contoh Empat — pilih semua elemen buku dalam katalog, di mana MyMethod mengambil XmlNodeSet sebagai parameter:

MyMethod(xpath(myMsg, "/catalog/book"));  

Contoh Lima — tambahkan elemen buku ke kontainer "BookOfTheMonth":

xpath(MyMsg2, "/RecommendedBooks/BookOfTheMonth") = myBook;  

Contoh Enam — tambahkan semua buku yang dihargai dua puluh atau kurang ke satu set buku yang direkomendasikan:

xpath(MyMsg2, "/RecommendedBooks/BestPriceBooks") = xpath(MyMsg, "/catalog/book[@price <= 20]");  

Contoh Tujuh — panggil kode pengguna yang mengembalikan elemen XML:

xpath(MyMsg2, "/RecommendedBooks/AdvertisedByPartner") = GetPartnerAdvertisedBook();  

Sebelum menerapkan contoh lima dan tujuh:

<RecommendedBooks>  
       <BookOfTheMonth/>  
       <BestPriceBooks/>  
       <AdvertisedByPartner/>  
</RecommendedBooks>  

Setelah menerapkan contoh lima dan tujuh:

<RecommendedBooks>  
       <BookOfTheMonth>  
              <Book country="USA">  
                     <title>McSharry</title>  
                     <author>  
                            <FirstName>Nancy</FirstName>  
                            <LastName>Jensen</LastName>  
                     </author>  
              </Book>  
       </BookOfTheMonth>  
       <BestPriceBooks/>  
       <AdvertisedByPartner>  
              <Book country="USA">  
                     <title>The Rooster</title>  
                     <author>  
                            <FirstName>Mindy</FirstName>  
                            <LastName>Martin</LastName>  
                     </author>  
              </Book>  
       </AdvertisedByPartner>  
</RecommendedBooks>