Sử dụng xpath3() trong Mule 3

Khi làm việc với các ứng dụng Mule ESB liên quan đến SOAP Web Service, chúng ta thường sẽ làm việc, thao tác với những dữ liệu, payload với định dạng XML. Sử dụng Dataweave có thể giúp chúng ta dễ dàng thao tác với XML data, nhưng có một cách nữa mà các bạn có thể sử dụng đó là sử dụng xpath3() trong Mule. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu về xpath3() của Mule trong bài viết này các bạn nhé!

Đầu tiên, mình sẽ tạo một Mule Maven project để làm ví dụ:

Sử dụng xpath3() trong Mule

Để làm ví dụ, mình sẽ tạo một ứng dụng Mule có nội dung như sau:

Sử dụng xpath3() trong Mule

Trong đó, HTTP Listener Connector có thể nhận một POST request từ người dùng với data trong phần body của request ở định dạng XML. Sau đó, chúng ta sẽ dùng xpath3() trong Mule để extract giá trị mà chúng ta cần từ data đó và in giá trị đó sử dụng Huong Dan Java Logger.

HTTP Listener Connector sẽ có cấu hình như sau:

Sử dụng xpath3() trong Mule

Global Configuration:

Sử dụng xpath3() trong Mule

Transformer Byte Array to String dùng để chuyển đổi Payload từ body data của request dưới dạng byte array sang String.

Huong Dan Java Logger có cấu hình như sau:

Sử dụng xpath3() trong Mule

Global Configuration:

Sử dụng xpath3() trong Mule

Để làm ví dụ, mình sẽ request tới ứng dụng này với data có nội dung như sau:

Đây là một SOAP Message đó các bạn!

Bây giờ chúng ta sẽ nói về xpath3() trong Mule.

xpath3() trong Mule là một function có định nghĩa như sau:

Trong đó:

– xPathExpression là một tham số bắt buộc phải có, dùng để định nghĩa expression đến phần tử mà chúng ta cần lấy data.

– inputData là dữ liệu đầu vào chứa data mà chúng ta cần lấy, mặc định nếu các bạn không declare tham số này thì xpath3() sẽ lấy input data từ Payload,

– returnType là kiểu dữ liệu sẽ trả về sau khi xpath3() execute expression để lấy kết quả. Mặc định thì returnType sẽ là trả về java.lang.String nếu chúng ta không declare giá trị này. Các giá trị khác của returnType bao gồm: NUMBER (kiểu java.lang.Double), BOOLEAN (kiểu java.lang.Boolean), NODE (kiểu DOM XML Node) và NODESET (kiểu DOM NodeList).

Để định nghĩa xPathExpression với xpath3() các bạn nên định nghĩa theo định dạng sau:

với data có theo thứ phân cấp như sau: “<Tag1><Tag2><Tag3></Tag3></Tag2></Tag1>”. Trong trường hợp này, chúng ta cần lấy nội dung của <Tag3>.

Ví dụ, với data của mình ở trên, để lấy nội dung của tag <name>, mình sẽ định nghĩa xPathExpression như sau:

Kết quả khi mình cấu hình phần Message của Huong Dan Java Logger với giá trị:

sẽ như sau:

Sử dụng xpath3() trong Mule

Trong trường hợp request message có nội dung như sau:

thì để extract giá trị của tag <name> với attribute lastname=”Phung”, các bạn cần định nghĩa xPathExpression như sau:

hoặc:

Kết quả khi chúng ta chạy ví dụ trên như sau;

Sử dụng xpath3() trong Mule

5/5 - (1 bình chọn)

Add Comment