Công cụ dành cho nhà phát triển · Trình chuyển đổi cú pháp
Các câu trả lời XML kế thừa là JSON: tốt cho việc kiểm tra, rủi ro cho mã
· Tại sao nó quan trọng
xml json developer-workflow
Chuyển đổi phản hồi XML thành JSON là cách nhanh chóng để hiểu phản hồi đó, nhưng việc xây dựng trình phân tích cú pháp của bạn trên hình dạng được chuyển đổi đó là cách xử lý một lỗi so với nhiều lỗi. Bài viết này vạch ra ranh giới giữa kiểm tra và thực hiện.
Nó hoạt động với một kết quả và hỏng với hai kết quả — nguồn cấp dữ liệu XML trông giống như một đối tượng JSON gọn gàng cho đến khi phần tử thứ hai xuất hiện
Mẫu XML với một kết quả sẽ ánh xạ mẫu con của nó tới một đối tượng hoặc chuỗi; anh chị em thứ hai biến cùng một thuộc tính thành một mảng. Do đó, mã được viết dựa trên mẫu được chuyển đổi đầu tiên có thể bị lỗi khi số lượng phần tử thay đổi. JSON là dự báo về các lần xuất hiện được quan sát, không phải là hợp đồng nhận biết lược đồ.
ToolAcre làm cho việc ánh xạ có thể dự đoán được nhưng không thể loại bỏ sự mơ hồ giữa một và nhiều này. Để tích hợp lâu dài, hãy bình thường hóa các đường dẫn thu thập đã biết từ XSD hoặc hợp đồng được ghi lại và kiểm tra cả hai số liệu dựa trên trình đọc XML thực sự được sử dụng trong sản xuất.
Tại sao chuyển đổi lại tuyệt vời cho việc đọc — lồng phẳng vào các dấu ngoặc nhọn quen thuộc, các thuộc tính được hiển thị dưới dạng khóa và toàn bộ phản hồi có thể được quét cùng một lúc
Việc chuyển đổi rất hữu ích cho việc đọc vì các phần tử lồng nhau trở thành đối tượng quen thuộc, các phần tử anh em lặp lại trở thành mảng và các thuộc tính xuất hiện dưới dạng khóa `@`. Một phong bì lớn có thể được quét nhanh chóng mà không cần phải có thẻ đóng phù hợp. Suy luận kiểu có thể được tắt để văn bản không bị âm thầm đoán thành số hoặc boolean.
Chế độ xem có thể đọc được đặc biệt hữu ích trong quá trình phân loại sự cố, trong đó việc xác định mã lỗi hoặc tải trọng quan trọng hơn việc duy trì đánh dấu tác giả. Giữ nguồn bên cạnh JSON vì phép chiếu có thể không giữ lại mọi sự khác biệt mà mã ứng dụng cần.
Tại sao hình dạng được chuyển đổi không ổn định — các phần tử lặp lại chỉ trở thành mảng khi được lặp lại, tiền tố thuộc tính và nút văn bản xuất hiện hoặc biến mất
Hình dạng được chuyển đổi phụ thuộc vào số lần xuất hiện, tiền tố dành riêng và liệu một phần tử có thuộc tính hay phần tử con hay không. Văn bản thuần túy có thể thu gọn thành chuỗi; cùng một văn bản sẽ di chuyển dưới `#text` khi cấu trúc được thêm vào. CDATA xuất hiện trong `#cdata` và các thuộc tính sử dụng `@`.
Những chuyển đổi này là những quy ước được ghi lại, không phải là những sự cố triển khai không ổn định. Chúng chỉ trở nên rủi ro khi mã giả sử một mẫu xác định tất cả các hình dạng XML trong tương lai. Một mô hình nhận biết lược đồ có thể nêu rõ tính lặp lại và tính tùy chọn; trình phân tích cú pháp chung không thể.
Mã đó có thể cần những gì bị mất — không gian tên, thứ tự phần tử, nội dung hỗn hợp, CDATA ranh giới và nhận xét
Tiền tố không gian tên nằm trong tên thuộc tính và phần khai báo ở dạng `@xmlns:*`; chúng không được giải quyết thành tên mở rộng. CDATA vẫn được đánh dấu dưới khóa đặc biệt của nó. Các nhận xét, khai báo và hướng dẫn xử lý đều bị loại bỏ. Văn bản hỗn hợp xung quanh các phần tử con được nối và mất vị trí tương đối.
Thứ tự phần tử giữa các thuộc tính được đặt tên khác nhau không phải là sự thay thế an toàn cho chuỗi nút XML sau khi chiếu vào một đối tượng. Nếu thứ tự tài liệu, văn xuôi hỗn hợp hoặc ranh giới CDATA chính xác quan trọng, hãy sử dụng trình phân tích cú pháp sự kiện hoặc cây XML thay vì chế độ xem có hình JSON này.
Tiền tố không gian tên và giá trị CDATA vẫn hiển thị, trong khi ranh giới thứ tự và nút có thể bị mất
Sử dụng tài liệu hình phong bì có tiền tố không gian tên, một phần tử con và hai phần tử kết quả. Chuyển đổi hiển thị đường dẫn nội dung, giữ các tiền tố bằng chữ và tạo ra một mảng kết quả. Ví dụ này thể hiện việc điều hướng mà không yêu cầu lỗi WSDL, SOAP hoặc hỗ trợ phân giải không gian tên.
Sau đó lặp lại với một kết quả và quan sát mảng biến mất. Cặp đó là mã ứng dụng cố định hồi quy cần. ToolAcre có thể cho thấy sự khác biệt; nó không thể quyết định liệu miền của bạn có luôn bao bọc giá trị trong một mảng hay không.
Ví dụ đã hoạt động: tài liệu XML hình phong bì không yêu cầu hỗ trợ lược đồ SOAP
Tùy thuộc vào chuyển đổi có thể hợp lý cho XML tập trung vào dữ liệu khi ánh xạ được ghi lại, số lượng số được chuẩn hóa và cố định bao gồm các thuộc tính, giá trị trống, nội dung hỗn hợp và không gian tên. Hãy coi bản thân ánh xạ như một giao diện thuộc sở hữu của ứng dụng của bạn.
Giữ kiểu suy luận rõ ràng. Khi tắt nó, các giá trị sẽ là chuỗi; khi bật nó, các phương pháp phỏng đoán của trình phân tích cú pháp sẽ chọn số và boolean. Ánh xạ ổn định sẽ không vô tình chuyển đổi tùy chọn đó giữa các môi trường.
Điều này không bao gồm những gì — công cụ WSDL và XSD để tạo các máy khách đã nhập, đây là lộ trình mạnh mẽ để tích hợp lâu dài
Không bao gồm công cụ WSDL hoặc XSD. Trình chuyển đổi xác thực XML được định dạng đúng, từ chối mọi nút DOCTYPE và dự án; nó không tạo ra các máy khách đã nhập, xác thực trình tự hoặc thực thi các khía cạnh miền. Những tác vụ đó yêu cầu phần mềm nhận biết lược đồ.
Việc từ chối DOCTYPE cũng có nghĩa là một số tài liệu cũ sẽ không phân tích cú pháp ngay cả khi các khai báo của chúng vô hại. Đây là ranh giới bảo mật ngăn chặn việc mở rộng thực thể, không phải là bằng chứng cho thấy phản hồi dịch vụ cơ bản không đúng định dạng.
Bài học rút ra: chuyển đổi để hiểu, phân tích cú pháp để triển khai — và cách bảng chuyển đổi Cú pháp cung cấp cho bạn chế độ xem có thể đọc được trong vài giây
Chuyển đổi để hiểu; phân tích cú pháp dựa trên hợp đồng sở hữu để thực hiện. Chế độ xem JSON có thể hiển thị tải trọng sau vài giây, trong khi XML ban đầu vẫn là bằng chứng về thứ tự, số lượng và không gian tên.
Bộ chuyển đổi cú pháp trung thực về phép chiếu và cảnh báo của nó. Sử dụng khả năng hiển thị đó để thiết kế các thử nghiệm trường hợp cụ thể thay vì để một mẫu gọn gàng xác định sự tích hợp phá vỡ phần tử lặp lại tiếp theo.
Một bộ cố định bền phải bao gồm không, một và một số lần xuất hiện đối với các phần tử có thể lặp lại; một thuộc tính và đứa trẻ có chung một tên; phần tử tự đóng; văn bản hỗn hợp; CDATA; và một tiền tố không gian tên theo nghĩa đen. Chạy các nội dung cố định đó thông qua ánh xạ mà bạn thực sự triển khai và xác nhận đối tượng miền được chuẩn hóa chứ không phải văn bản JSON được định dạng của ToolAcre. Cách tiếp cận đó sử dụng trình chuyển đổi để khám phá các hình dạng trong khi vẫn giữ hành vi sản xuất gắn liền với hợp đồng trình phân tích cú pháp rõ ràng.