2009-07-17 20 views
17

Tôi có tệp XML lớn (90MB) từ Excel, được lưu ở định dạng Bảng tính XML 2003. Nó chứa nhiều dữ liệu không hợp lệ khác nhau, do đó Firefox phun ra các thông báo như thế này:Cách nhanh để xác thực XML/Xác định điểm bị hỏng

Line Number 790402, Column 65: 
<Cell ss:StyleID="s18"><Data ss:Type="String">Here's some data I&#5;?Bnternational</Data></Cell> 

Có công cụ phân tích cú pháp XML của tôi và cho tôi biết có vấn đề gì với Firefox không? Firefox khá chậm khi phân tích cú pháp nó (có lẽ vì nó giữ tất cả trong bộ nhớ sẵn sàng để kết xuất thành một cây điều hướng đẹp). Tôi không bận tâm về việc xác nhận hợp lệ đối với một XSD, chỉ muốn biết liệu XML có được định dạng đúng hay không.

+0

thể trùng lặp của (http://stackoverflow.com/questions/124865/xml-schema-xsd-validation-tool) – kenorb

+2

không nó không - câu hỏi này đề cập rõ ràng rằng nó không phải là về việc xác nhận hợp lệ đối với một XSD, trong khi câu hỏi đó hoàn toàn là về việc xác thực XSD. –

Trả lời

36

Có lệnh linux được gọi là xmllint điều đó tốt cho việc này. Nó rất nhanh, xử lý các tệp tuyệt vời mà không cần chặn mã vạch và cung cấp các thông báo lỗi xác thực hữu ích.

+2

Nội dung thú vị. Ngay cả xác nhận được hỗ trợ ... Làm thế nào tôi có thể sống mà không có nó? +1 – Boldewyn

+0

Tùy chọn --format cũng rất tiện dụng – skaffman

2

Bạn có thể sử dụng các tính năng của các ngôn ngữ khác cho điều đó. Ví dụ: một lớp lót hai lớp bằng Python:

import xml.dom.minidom as dom 
dom.parse ('test.xml') 

Điều này sẽ hiển thị sự cố và khá hiệu quả. Tôi nhớ có một bộ công cụ XML hoạt động khá tốt từ bên trong bash, nhưng tôi không thể tìm thấy một liên kết đến đó ngay bây giờ.

Chúc mừng,

Edit:This question's answer đề nghị sử dụng SAX qua dom, vì nó muốn được performant hơn. Một kịch bản Python sẵn sàng để sử dụng sau đó sẽ giống như thế này:

Chỉnh sửa 2: Tôi nhớ một lần nữa, công cụ này là XMLStarlet. Tôi thấy nó khá là đẹp, khi tôi sử dụng nó hai năm trước.

+0

Tôi cũng vậy, nhưng đối với các tệp XML thực sự lớn, bạn sẽ hài lòng với mọi hiệu suất bạn có thể ép từ công cụ. – Boldewyn

2

Tôi luôn đề xuất các tiện ích dòng lệnh XML Starlet.

Họ cung cấp xác nhận, truy vấn, định dạng, chỉnh sửa các tài liệu trực tiếp từ dòng lệnh, và họ đang vô giá đối với loại công việc này, hoặc các tài liệu sanity kiểm tra, cắt đoạn ra qua XPath, vv

+0

Haha! Bạn đến quá muộn. Tôi nhớ nó đúng lúc. ;-) – Boldewyn

+0

Nó rõ ràng là tạo ấn tượng lớn với bạn –

+0

Có, ba năm trước, khi tôi bắt đầu với XML, thật rắc rối khi làm việc với nó trên dòng lệnh. Sau đó, tôi tìm thấy XML Starlet và đột nhiên nó đã thực sự mát mẻ khi làm việc với XML trong các tập lệnh bash của tôi. – Boldewyn

10

Các câu trả lời khác đơn giản: [? công cụ XML Schema (XSD) xác nhận]

python -c "import sys, xml.dom.minidom as d; d.parse(sys.argv[1])" FILE 
+0

Lệnh một dòng tuyệt vời! – Martlark

Các vấn đề liên quan