Visual Basic for Applications:
Làm việc với XML

Làm thế nào:

Để bắt đầu tương tác với XML, người ta thường sử dụng đối tượng MSXML2.DOMDocument. Giao diện này cho phép bạn tải, phân tích cú pháp và điều hướng các tài liệu XML. Dưới đây là một ví dụ đơn giản minh họa cách tải một tệp XML, điều hướng cấu trúc của nó và đọc thuộc tính và nội dung văn bản.

' Đầu tiên, hãy đảm bảo bạn đã thêm tham chiếu đến "Microsoft XML, v6.0" qua Tools -> References
Dim xmlDoc As MSXML2.DOMDocument60
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False
xmlDoc.Load("C:\Path\To\Your\File.xml") ' Tải tệp XML của bạn

' Kiểm tra xem XML đã được tải thành công không
If xmlDoc.parseError.ErrorCode <> 0 Then
    MsgBox "Lỗi khi tải XML:" & xmlDoc.parseError.reason
Else
    ' Điều hướng và đọc các phần tử
    Dim book As IXMLDOMNode
    Set book = xmlDoc.SelectSingleNode("//book/title") ' XPath để tìm <title> đầu tiên trong <book>
    MsgBox book.Text ' Hiển thị văn bản tiêu đề
End If

Trong đoạn mã mẫu trên, chúng tôi tạo một thể hiện của MSXML2.DOMDocument60, tải một tệp XML, sau đó kiểm tra lỗi. Nếu không tìm thấy lỗi, chúng tôi điều hướng đến một nút cụ thể sử dụng XPath và hiển thị nội dung văn bản của nó.

Sâu hơn:

Sự tích hợp các khả năng XML trong VBA bắt đầu từ đầu những năm 2000, khi nhu cầu để các ứng dụng Office tương tác với dữ liệu và dịch vụ web bắt đầu tăng lên. Thư viện MSXML, hay Microsoft XML Core Services, đã phát triển qua nhiều năm, với MSXML2.DOMDocument60 là một trong những phiên bản mới nhất được khuyến khích sử dụng do hiệu suất và tính năng an toàn được cải thiện.

Mặc dù mạnh mẽ, các khả năng xử lý XML của VBA được coi là kém hiệu quả và cồng kềnh hơn so với môi trường lập trình hiện đại như XML.etree của Python hoặc LINQ to XML của C#. Sự dài dòng vốn có của VBA và yêu cầu thêm và quản lý tham chiếu một cách thủ công có thể cản trở sự phát triển nhanh chóng. Hơn nữa, với sự xuất hiện của JSON như một định dạng trao đổi dữ liệu nhẹ hơn, nhiều lập trình viên và ứng dụng đang chuyển dịch khỏi XML trừ khi việc tương thích với các hệ thống cũ hoặc dịch vụ doanh nghiệp cụ thể yêu cầu sử dụng nó.

Tuy nhiên, đối với các nhiệm vụ yêu cầu phân tích cú pháp hoặc tạo tài liệu XML trong bối cảnh của tự động hóa Microsoft Office, việc tận dụng các tính năng xử lý XML của VBA vẫn là một cách tiếp cận khả thi và đôi khi cần thiết. Điều này tạo ra sự cân bằng giữa việc tiếp cận bộ tính năng phong phú của các ứng dụng Office và các khả năng thao tác dữ liệu có cấu trúc do XML cung cấp.