Rexx - XML
XML là một ngôn ngữ mã nguồn mở, di động cho phép các lập trình viên phát triển các ứng dụng mà các ứng dụng khác có thể đọc được, bất kể hệ điều hành và / hoặc ngôn ngữ phát triển. Đây là một trong những ngôn ngữ phổ biến nhất được sử dụng để trao đổi dữ liệu giữa các ứng dụng.
XML là gì?
Ngôn ngữ đánh dấu mở rộng XML là một ngôn ngữ đánh dấu giống như HTML hoặc SGML. Điều này được khuyến nghị bởi World Wide Web Consortium và có sẵn như một tiêu chuẩn mở. XML cực kỳ hữu ích để theo dõi lượng dữ liệu vừa và nhỏ mà không yêu cầu xương sống dựa trên SQL.
Đối với tất cả các ví dụ về mã XML của chúng tôi, hãy sử dụng tệp XML đơn giản sau movies.xml để xây dựng tệp XML và đọc tệp sau đó.
<collection shelf = "New Arrivals">
<movie title = "Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movie title = "Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movie title = "Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<year>1986</year>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stam pede!</description>
</movie>
<movie title = "Ishtar">
<type>Comedy</type>
<format>VHS</format>
<year>1987</year>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom </description>
</movie>
</collection>
Bắt đầu
Theo mặc định, chức năng xml không được bao gồm trong trình thông dịch Rexx. Để làm việc với XML trong Rexx, cần thực hiện theo các bước sau.
Tải xuống các tệp sau -
Rexxxml - www.interlog.com/~ptjm/
Libxml2 - www.ctindustries.net/libxml/
iconv-1.9.2.win32 - www.xmlsoft.org/sources/win32/oldreleases/
libxslt-1.1.26.win32 - www.xmlsoft.org/sources/win32/oldreleases/
Giải nén tất cả các tệp và đảm bảo chúng được đưa vào đường dẫn hệ thống.
Đang tải các hàm XML
Khi tất cả các tệp trong phần trên đã được tải xuống và đăng ký thành công, bước tiếp theo là viết mã để tải các chức năng Rexx XML. Điều này được thực hiện với đoạn mã sau.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
Những điều sau đây có thể được lưu ý về chương trình trên:
Chức năng rxfuncaddđược sử dụng để tải các thư viện bên ngoài. Cácxmlloadfuncs hàm được sử dụng để tải tất cả các thư viện trong rexxxml tập tin vào bộ nhớ.
Nếu giá trị của rcc <> 0, thì nó sẽ dẫn đến lỗi. Đối với điều này, chúng ta có thể gọirxfuncerrmsg để cung cấp cho chúng tôi thêm chi tiết về thông báo lỗi.
Cuối cùng chúng tôi thực hiện cuộc gọi đến xmlloadfuncsđể tất cả chức năng liên quan đến xml hiện có thể được bật trong chương trình Rexx.
Hãy xem xét các methods available for XML in Rexx.
xmlVersion
Phương thức này trả về phiên bản của các thư viện XML và XSLT được sử dụng trên hệ thống.
Cú pháp
xmlVersion()
Thông số
không ai
Giá trị trả lại
Phương thức này trả về phiên bản của các thư viện XML và XSLT được sử dụng trên hệ thống.
Thí dụ
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Khi chạy chương trình trên, chúng ta sẽ nhận được kết quả như sau. Điều này một lần nữa phụ thuộc vào phiên bản của các thư viện XML đang được sử dụng trên hệ thống.
Đầu ra
1.0.0 20631 10126
xmlParseXML
Hàm này được sử dụng để phân tích cú pháp dữ liệu XML được gửi đến hàm. Cây tài liệu được trả về bởi hàm.
Cú pháp
xmlParseXML(filename)
Thông số
Filename - Đây là tên của tệp XML cần được phân tích cú pháp.
Giá trị trả lại
Cây tài liệu được trả về bởi hàm. Khác trả về 0, nếu có lỗi.
Thí dụ
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Đầu ra
Không có đầu ra chung.
xmlFindNode
Phương pháp này đánh giá XPath expressionchuyển cho nó. Điều này được sử dụng để phân tích cú pháp cây tài liệu để tạo ranodeset có thể được xử lý thêm.
Cú pháp
xmlParseXML(XPath,document)
Thông số
XPath - Đây là đường dẫn của nút trong tệp xml.
document - Đây là tài liệu XML
Giá trị trả lại
Đánh giá biểu thức XPath và trả về kết quả là một tập hợp nút có thể được sử dụng sau này.
Thí dụ
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
say xmlNodesetCount(nodeset)
Khi chạy chương trình trên, chúng ta sẽ nhận được kết quả như sau.
Đầu ra
4
Đầu ra hiển thị số lượng nút phim trong danh sách xml của chúng tôi
xmlEvalExpression
Phương thức dưới đây được sử dụng để đánh giá biểu thức XPath và trả về kết quả là một chuỗi.
Cú pháp
xmlParseXML(XPath,Node)
Thông số
XPath - Đây là đường dẫn của nút trong tệp xml.
document - Phần tử nút cụ thể.
Giá trị trả lại
Một chuỗi được trả về dựa trên biểu thức XPath được gửi đến nó.
Thí dụ
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
do j = 1 to xmlNodesetCount(nodeset)
value = xmlEvalExpression('type', xmlNodesetItem(nodeset, j))
say value
end
Khi chạy chương trình trên, chúng ta sẽ nhận được kết quả như sau.
Đầu ra
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy