Bộ định dạng & xác thực XML

Dán XML, định dạng với thụt lề đúng hoặc xác thực cú pháp. Xử lý thuộc tính và không gian tên. Không tải lên.

  1. Dán XML của bạn vào vùng văn bản bên trái.
  2. Bấm Định dạng để đi vòng qua fast-xml-parser và tạo XML có thụt lề.
  3. Bấm Xác thực để kiểm tra well-formedness mà không sửa đổi đầu vào.
  4. Lỗi chỉ ra vị trí lỗi trong tài liệu.
Công cụ này làm gì?

Phân tích XML bằng fast-xml-parser và phát ra lại với thụt lề nhất quán. Thứ tự thuộc tính trong mỗi phần tử được bảo toàn; sự lồng phần tử được bảo toàn chính xác. Nội dung hỗn hợp (văn bản + phần tử con) và không gian tên (prefix:tag) được giữ nguyên. Đầu ra là XML well-formed — nhưng well-formed không giống hợp lệ (sự hợp lệ cần schema hoặc DTD, công cụ này không kiểm tra).

Ví dụ

Đầu vào XML lộn xộn:

<root version="1"><name>Ada</name><tags>math</tags><tags>logic</tags></root>

Đầu ra đã định dạng:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

Lỗi XML thường gặp và cách khắc phục

Quy tắc well-formedness của XML nghiêm ngặt hơn HTML. Các mẫu dưới đây bao gồm hầu hết các lỗi của bộ phân tích.

  • Thẻ chưa đóng. `<a><b></a>` không hợp lệ — `<b>` phải được đóng (`<b/>` hoặc `</b>` ở đâu đó). XML không cho phép thẻ đóng tùy chọn kiểu HTML.
  • Không khớp chữ hoa/thường. XML phân biệt chữ hoa/thường — `<Foo></foo>` là hai tên thẻ khác nhau. Khớp chữ hoa thường chính xác.
  • Ký tự đặc biệt không được thoát. Một `<`, `>`, `&` hoặc dấu nháy theo nghĩa đen bên trong văn bản hoặc giá trị thuộc tính phải được thoát: `&lt;`, `&gt;`, `&amp;`, `&quot;`. Bao bọc dữ liệu có những ký tự này trong CDATA: `<![CDATA[...]]>`.
  • Nhiều gốc. XML yêu cầu chính xác một phần tử gốc. `<a/><b/>` ở cấp cao nhất không hợp lệ — bao bọc: `<root><a/><b/></root>`.
  • Tên phần tử không hợp lệ. Tên phần tử không thể bắt đầu bằng chữ số, chứa khoảng trắng, hoặc dùng ký tự dành riêng (`< > & " \'`). Tên bắt đầu bằng `xml` (bất kỳ chữ hoa thường) được dành riêng theo đặc tả.
  • Dấu nháy không khớp xung quanh thuộc tính. `<a name="value\'>` trộn lẫn dấu nháy đôi và đơn. Chọn một kiểu nhất quán cho mỗi thuộc tính. Cả hai đều là XML hợp lệ.
Câu hỏi thường gặp

Định dạng có thay đổi dữ liệu của tôi không?

Chỉ khoảng trắng giữa các phần tử. Thứ tự phần tử, thứ tự thuộc tính, giá trị thuộc tính, nội dung văn bản và khung CDATA được bảo toàn. Dạng tự đóng (`<x/>`) và dạng tường minh (`<x></x>`) có thể chuẩn hóa.

Bình luận XML có được giữ không?

fast-xml-parser bỏ bình luận theo mặc định. Nếu bạn cần định dạng giữ bình luận, dùng công cụ khác (chẳng hạn biến đổi đồng nhất XSLT, hoặc `xmllint --format`).

Cái này có xác thực dựa trên schema không?

Không. Nó chỉ kiểm tra well-formedness — rằng tài liệu phân tích thành XML hợp lệ về mặt cú pháp. Xác thực schema (XSD, DTD, RelaxNG) là một bước riêng yêu cầu schema làm đầu vào bổ sung.

Không gian tên được xử lý thế nào?

Tiền tố không gian tên được giữ như một phần của tên phần tử (`x:foo`). Khai báo không gian tên mặc định và liên kết tiền tố được bảo toàn dưới dạng thuộc tính. Xử lý nhận biết không gian tên (giải quyết URI) không được thực hiện.

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

Không. Mọi thứ chạy trong trình duyệt của bạn — đầu vào được phân tích và tuần tự lại bởi JavaScript trên trang này và không bao giờ gửi đến máy chủ.

Tôi có thể tùy chỉnh thụt lề không?

Hiện cố định ở 2 khoảng trắng mỗi cấp. Để tùy chỉnh, chạy fast-xml-parser trên dòng lệnh — cùng thư viện — và truyền `{ indentBy: " " }` hoặc bất kỳ chuỗi nào khác.