Trình Định Dạng & Rút Gọn XML

Dán XML để định dạng, làm đẹp hoặc nén nó tức thì.

Không có dữ liệu nào rời khỏi thiết bị của bạn

Cách sử dụng

  1. Dán XML của bạn vào ô nhập.
  2. Nhấp Định dạng để làm đẹp hoặc Nén để giảm kích thước.
  3. Sao chép hoặc tải xuống kết quả.

Câu hỏi thường gặp

Điều gì xảy ra nếu XML của tôi chứa lỗi?

Công cụ xác thực XML của bạn bằng DOMParser tích hợp trong trình duyệt. Lỗi cú pháp được hiển thị trong khung đỏ phía trên đầu ra.

Có hỗ trợ các phần CDATA, chú thích và lệnh xử lý không?

Có. Trình định dạng bảo toàn tất cả các loại nút XML, bao gồm các phần CDATA, chú thích và lệnh xử lý.

Có giới hạn kích thước không?

Không có giới hạn cứng · điều này phụ thuộc vào bộ nhớ của trình duyệt của bạn. Các tệp XML nhiều MB thường định dạng tức thì.

Tổng Quan Thực Tế về XML

XML 1.0 trở thành Khuyến nghị W3C vào ngày 10 tháng 2 năm 1998, được biên tập bởi Tim Bray, Jean Paoli và C. M. Sperberg-McQueen, với nhóm công tác do Jon Bosak của Sun chủ trì. Trích dẫn ra mắt của Tim Bray đã nắm bắt ý định thiết kế: «XML is extensible, internationalized, robust, simple, and built for the Web.» Phiên bản chính tắc hiện tại là Fifth Edition, xuất bản ngày 26 tháng 11 năm 2008, được biên tập bởi Bray, Paoli, Sperberg-McQueen, Eve Maler và François Yergeau. XML kế thừa trực tiếp từ SGML (ISO 8879:1986), một định dạng tài liệu lớn hơn nhiều, khó triển khai hơn nhiều mà XML đã loại bỏ hầu hết các phần ít được dùng trong khi vẫn giữ nguyên mô hình tài liệu.

XML Vẫn Tồn Tại ở Đâu trong Năm 2026

JSON đã thống trị các payload REST API hơn một thập kỷ, nhưng XML vẫn cắm rễ sâu ở bất kỳ đâu mà độ chặt chẽ schema, ngữ nghĩa tài liệu hoặc các tiêu chuẩn đã được thiết lập ràng buộc nó. Biết nơi bạn sẽ gặp nó vào một ngày cụ thể là một nửa giá trị của một formatter tốt:

Hợp Lệ Cấu Trúc vs Hợp Lệ Schema: Chúng Không Giống Nhau

XML sử dụng hai cấp độ tuân thủ khác nhau và chúng dễ bị nhầm lẫn:

Formatter này chỉ kiểm tra tính hợp lệ cấu trúc. DOMParser tích hợp của trình duyệt báo cáo lỗi phân tích cú pháp đầu tiên gặp phải thông qua phần tử parsererror, công cụ hiển thị lỗi này trong hộp lỗi màu đỏ. Xác thực theo schema cần một công cụ khác (Saxon cho XSD, libxml2 với xmllint --schema, dịch vụ W3C validator, v.v.).

Năm Tham Chiếu Thực Thể Được Định Nghĩa Sẵn

Theo W3C XML 1.0 §4.6, «well-formed documents need not declare any of the following entities»: amp, lt, gt, apos, quot. Dấu chấm phẩy ở cuối là bắt buộc, XML, không giống một số cách dùng HTML, sẽ không bao giờ chấp nhận &amp mà không có ; ở cuối.

Thực thểKý tựKhi nào cần dùng
&lt;<Luôn luôn trong nội dung phần tử (nếu không nó sẽ bắt đầu một thẻ)
&amp;&Luôn luôn (nếu không nó sẽ bắt đầu một tham chiếu thực thể)
&gt;>Bắt buộc trong chuỗi ]]> trong nội dung; khuyến nghị ở nơi khác để đối xứng
&apos;'Trong giá trị thuộc tính được phân cách bằng dấu nháy đơn
&quot;"Trong giá trị thuộc tính được phân cách bằng dấu nháy kép

Phần CDATA, Chú Thích và Hướng Dẫn Xử Lý

Ba tính năng cú pháp đặc biệt mà bất kỳ ai định dạng XML cuối cùng cũng gặp phải:

Không Gian Tên

Cơ chế không gian tên của XML là thứ cho phép nhiều từ vựng cùng tồn tại trong một tài liệu: Atom cộng với extension tùy chỉnh, SOAP cộng với header WS-Security, phần tài liệu chính của OOXML tham chiếu các mối quan hệ, bản vẽ và hình ảnh từ các không gian tên anh em. Cú pháp là xmlns="…" cho không gian tên mặc định và xmlns:prefix="…" cho không gian tên có tiền tố, và formatter giữ nguyên cả hai không thay đổi. URI không gian tên là các định danh, không phải URL, chúng không cần phải trỏ đến bất kỳ thứ gì.

Hai Bẫy Bảo Mật XML Nổi Tiếng

Tấn công Billion Laughs. Một file XML nhỏ với các thực thể mở rộng đệ quy có thể phình to đến hàng tỷ ký tự trong bộ nhớ của parser:

<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!-- … nine more layers later, the document expands to 10^9 lols -->

Các parser hiện đại giới hạn việc mở rộng thực thể để ngăn chặn điều này. Tấn công XXE (XML External Entity) khai thác parser giải quyết các thực thể bên ngoài để đọc file cục bộ (<!ENTITY xxe SYSTEM "file:///etc/passwd">) hoặc kích hoạt yêu cầu SSRF từ máy chủ. Cheat sheet phòng ngừa XXE của OWASP rất rõ ràng: «the safest way to prevent XXE is always to disable DTDs (External Entities) completely.» Đó chính xác là điều mà DOMParser của trình duyệt làm, nó bỏ qua hoàn toàn các khai báo thực thể DOCTYPE, đó là lý do tại sao formatter phía client này cũng an toàn để nạp XML không đáng tin.

Pretty-Print so với Minify

Thuộc tính xml:space là lối thoát của bạn khi khoảng trắng thực sự quan trọng, chẳng hạn như mã nguồn nguyên văn được nhúng trong tài liệu. Đặt xml:space="preserve" trên phần tử tổ tiên và một processor tuân thủ sẽ giữ nguyên mọi khoảng trắng và ngắt dòng trong các phần tử con byte-for-byte.

Lỗi XML Phổ Biến Mà Formatter Bắt Được

  1. & không được thoát trong nội dung văn bản. Dấu và trần luôn không hợp lệ; hãy dùng &amp;.
  2. Thẻ không khớp hoặc chưa đóng. Lỗi phân tích cú pháp phổ biến nhất. Mỗi <tag> cần một </tag> tương ứng (hoặc dùng dạng tự đóng <tag/>).
  3. Nhiều phần tử gốc. Một tài liệu XML phải có đúng một phần tử ngoài cùng. Nếu bạn có hai phần tử anh em ở cấp cao nhất, hãy bao chúng trong một phần tử cha.
  4. Không khớp mã hóa. Khai báo <?xml version="1.0" encoding="UTF-8"?> phải khớp với mã hóa byte thực tế của file. UTF-16 BOM với khai báo UTF-8 là phiên bản kinh điển của lỗi này.
  5. Ký tự dành riêng trong giá trị thuộc tính. <tag attr="a<b"> không hợp lệ dù < trông vô hại bên trong dấu nháy.
  6. BOM lạc trước khai báo XML. Một số trình soạn thảo văn bản âm thầm chèn UTF-8 BOM gây nhầm lẫn cho các parser nghiêm ngặt.
  7. Kết thúc dòng hỗn hợp bên trong vùng xml:space="preserve". Các CR / LF / CRLF không nhất quán có thể tạo ra các artefact khoảng trắng hiển thị khi round-trip qua các nền tảng khác nhau.

Câu Hỏi Thường Gặp Thêm

Tại sao XML của tôi không tạo ra đầu ra khi định dạng?

Hầu hết vì đầu vào không hợp lệ cấu trúc. Hộp lỗi phía trên đầu ra hiển thị lỗi phân tích cú pháp đầu tiên mà DOMParser của trình duyệt gặp phải, thường là thẻ bị thiếu hoặc không khớp, & không được thoát, hoặc thiếu phần tử gốc. Sửa lỗi và chạy lại.

XML của tôi có được tải lên máy chủ không?

Không. Cả định dạng và minification đều chạy bên trong DOMParser tích hợp và một bộ tuần tự hóa JavaScript nhỏ của trình duyệt. XML của bạn không bao giờ rời khỏi trang, điều này quan trọng cho các payload SOAP, file cấu hình và bất kỳ thứ gì khác có thể chứa thông tin xác thực, URL nội bộ hoặc dữ liệu khách hàng nhạy cảm.

Công cụ có thể xác thực theo schema XSD hoặc DTD không?

Không. Xác thực schema yêu cầu tải file schema và giải quyết các tham chiếu của nó, đây là vấn đề khác với kiểm tra tính hợp lệ cấu trúc mà trình duyệt thực hiện. Để xác thực XSD, hãy dùng Saxon hoặc xmllint --schema tại dòng lệnh, hoặc dịch vụ W3C XML Schema validator.

XML có còn liên quan trong năm 2026 không, hay tôi chỉ nên dùng JSON?

Tùy thuộc vào điều bạn đang làm. Đối với các REST API mới, JSON hầu như luôn là lựa chọn đúng. Nhưng XML vẫn là mặc định cho tài liệu Office (.docx, .xlsx), nhắn tin doanh nghiệp (SOAP, tiêu chuẩn tài chính), tài nguyên Android, EPUB, RSS / Atom, SVG và hầu hết các trao đổi trong ngành có quy định. Biết cách đọc, định dạng và xác thực XML vẫn là kỹ năng cơ bản; nó chỉ không phải là công cụ đầu tiên mỗi ngày như JSON.

«preserve all node types» có nghĩa là gì với formatter?

Các phần CDATA, chú thích và hướng dẫn xử lý đều được giữ nguyên chính xác như chúng xuất hiện trong đầu vào, formatter chỉ thay đổi khoảng trắng giữa các phần tử. Vì vậy, một khối <![CDATA[ if (a < b) { … } ]]> round-trip byte-for-byte ngay cả khi nội dung của nó chứa ký tự < vốn cần thoát.

Công cụ liên quan

Công cụ Định Dạng & Xác Thực JSON Trực Tuyến Miễn Phí Trình Chuyển Đổi JSON Sang YAML Trình Định Dạng SQL