Công Cụ Này Là Gì?
Một số hệ thống (phần mềm doanh nghiệp cũ, một số API dựa trên SOAP, các feed gần giống RSS) yêu cầu dữ liệu ở dạng XML, trong khi bảng tính và hầu hết công cụ nhập dữ liệu lại yêu cầu CSV. Công cụ này di chuyển dữ liệu giữa hai định dạng: CSV → XML bọc mỗi dòng trong một phần tử <row> bên trong phần tử gốc <rows>, với mỗi cột trở thành một thẻ con được đặt tên theo tiêu đề; XML → CSV làm ngược lại, trích xuất một cột cho mỗi tên thẻ con riêng biệt tìm thấy.
Phía CSV được phân tích bằng một bộ phân tích trường có dấu ngoặc kép phù hợp (không phải tách theo dấu phẩy đơn giản), nên các giá trị chứa dấu phẩy, xuống dòng hoặc dấu ngoặc kép nhúng bên trong đều được xử lý chính xác. Phía XML được phân tích bằng API DOMParser có sẵn của trình duyệt — cùng giao diện mà trình duyệt dùng nội bộ để phân tích tài liệu XML — thay vì một bộ đọc tự viết dựa trên biểu thức chính quy, nên các thẻ lồng nhau và cách escape XML chuẩn được xử lý giống như một trình phân tích XML thật sự sẽ làm.
Tên cột/thẻ không phải là tên phần tử XML hợp lệ (chứa khoảng trắng, bắt đầu bằng chữ số, v.v.) sẽ tự động được làm sạch khi tạo XML, vì tên phần tử XML tuân theo các quy tắc nghiêm ngặt hơn nhiều so với tiêu đề CSV.
Nguồn: việc phân tích CSV tuân theo RFC 4180; cấu trúc XML tuân theo đặc tả W3C XML 1.0.
Tại Sao Nên Dùng?
- Hoạt động theo cả hai chiều — CSV sang XML và XML sang CSV, trong một công cụ.
- Phân tích CSV chính xác — xử lý các trường có dấu ngoặc kép với dấu phẩy, xuống dòng và dấu ngoặc kép được escape, không chỉ đơn giản tách theo dấu phẩy.
- Phân tích XML dựa trên chuẩn — XML → CSV dùng DOMParser có sẵn của trình duyệt thay vì một trình phân tích regex tùy chỉnh, nên XML sai định dạng được báo lỗi thay vì âm thầm tạo ra dữ liệu rác.
- Tự động escape XML — các ký tự đặc biệt như & và < trong giá trị CSV của bạn được escape đúng cách khi tạo XML.
- 100% phía client — không có gì bạn dán ở đây được tải lên máy chủ.
Cách Sử Dụng
- Dán dữ liệu CSV (có dòng tiêu đề) hoặc dữ liệu XML vào ô nhập.
- Nhấn "CSV → XML" để tạo XML, hoặc "XML → CSV" để chuyển XML trở lại thành bảng.
- Xem lại kết quả — sao chép hoặc tải xuống dưới dạng file.
- Với CSV → XML, mỗi dòng trở thành một phần tử <row> với một thẻ cho mỗi cột, được bọc trong gốc <rows>.
Ví dụ
Đầu vào
name,age
Alice,30
Bob,25Đầu ra
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<name>Alice</name>
<age>30</age>
</row>
<row>
<name>Bob</name>
<age>25</age>
</row>
</rows>Mỗi dòng CSV trở thành một phần tử <row>, và mỗi cột trở thành một thẻ con được đặt tên theo tiêu đề — chạy lại XML này qua "XML → CSV" sẽ dựng lại bảng hai cột ban đầu.
Mẹo thực tế
- Đưa dữ liệu vào một hệ thống cũ hoặc API SOAP yêu cầu XML: chuyển đổi dữ liệu CSV xuất ra của bạn tại đây trước, sau đó dán XML kết quả trực tiếp vào hệ thống đích.
- Kiểm tra một file XML xuất ra mà bạn nhận được: chạy XML → CSV để có ngay một bảng dễ đọc mà không cần một trình soạn thảo XML đầy đủ.
- Nếu XML của bạn dùng các phần tử lồng nhau sâu thay vì cấu trúc phẳng <row><cột>, công cụ này sẽ không làm phẳng bất kỳ cấp lồng nhau tùy ý nào — nó chỉ mong đợi một cấp phần tử dòng, mỗi phần tử chứa các phần tử cột đơn giản.
Vì sao dùng DOMParser thay vì một bộ đọc XML tự viết
XML có những quy tắc cấu trúc thực sự — phần tử lồng nhau, đặt dấu ngoặc kép cho thuộc tính, escape ký tự cho &, <, >, v.v. — mà một trình phân tích nhanh dựa trên biểu thức chính quy thường xử lý sai một cách tinh vi với bất cứ thứ gì ngoài đầu vào đơn giản nhất. Sử dụng API DOMParser có sẵn của trình duyệt nghĩa là công cụ này dựa vào chính công cụ XML tuân thủ chuẩn mà trình duyệt sử dụng để hiển thị tài liệu XML, thay vì tự triển khai lại việc phân tích XML từ đầu. Điều này cũng có nghĩa là XML sai định dạng — một thẻ chưa đóng, một dấu ngoặc nhọn lạc chỗ — sẽ hiện ra như một lỗi phân tích rõ ràng thay vì âm thầm tạo ra một file CSV bị hỏng hoặc không đầy đủ.
Câu Hỏi Thường Gặp
Công cụ có xử lý đúng các giá trị CSV chứa dấu phẩy hoặc dấu ngoặc kép không?
Có. Bộ phân tích CSV là một bộ phân tích máy trạng thái thực sự, theo dõi xem nó có đang ở trong một trường có dấu ngoặc kép hay không, nên dấu phẩy và xuống dòng bên trong dấu ngoặc kép (ví dụ "Smith, John") cũng như dấu ngoặc kép được nhân đôi để escape một ký tự ngoặc kép theo nghĩa đen đều được xử lý chính xác — nó không chỉ đơn giản tách tại mỗi dấu phẩy.
XML được phân tích như thế nào — có phải là một trình phân tích regex tùy chỉnh không?
Không. XML → CSV dùng API DOMParser có sẵn của trình duyệt để phân tích XML thành một cây tài liệu thực sự, giống hệt cách trình duyệt phân tích bất kỳ tài liệu XML nào. Điều này có nghĩa là XML sai định dạng sẽ được phát hiện và báo lỗi, thay vì âm thầm tạo ra kết quả sai như một trình phân tích regex tự viết có thể làm.
Điều gì xảy ra với tên cột không phải là thẻ XML hợp lệ?
Bất cứ thứ gì không phải là chữ cái, chữ số, dấu gạch dưới, dấu gạch ngang hoặc dấu chấm đều được thay bằng dấu gạch dưới, và một dấu gạch dưới ở đầu sẽ được thêm vào nếu tên đó lẽ ra sẽ bắt đầu bằng chữ số hoặc dấu câu — vì tên phần tử XML không thể bắt đầu bằng số hoặc chứa khoảng trắng như tiêu đề CSV có thể.
Dữ liệu của tôi có được tải lên máy chủ không?
Không. Cả hai chiều chuyển đổi đều chạy hoàn toàn bằng JavaScript trong trình duyệt của bạn, sử dụng chính công cụ phân tích XML của trình duyệt — không có gì được gửi đi đâu cả, giúp việc sử dụng an toàn với dữ liệu kinh doanh hoặc khách hàng đã xuất ra.
Chuyển đổi CSV → XML → CSV có cho lại chính xác dữ liệu ban đầu không?
Với CSV được định dạng tốt và có tập cột nhất quán, có — quá trình đi và về giữ nguyên các giá trị. Nếu CSV gốc của bạn có các cột không nhất quán giữa các dòng hoặc ký tự bất thường trong tên tiêu đề, tên thẻ đã được làm sạch nghĩa là cách viết chính xác của tiêu đề có thể không được giữ nguyên hoàn hảo, mặc dù giá trị dữ liệu thì vẫn được giữ nguyên.