2012-06-15 28 views
5

Tôi muốn xác thực XML cho bên dưới bằng cách sử dụng node.js. Bất cứ ai có thể đề xuất mô-đun node.js tốt mà hoạt động cả trên windows/linux?Xác thực cú pháp/cấu trúc XML với node.js

  • Validate XML Cú pháp
  • Validate XML Structure (Schema)

Cảm ơn trước.

Trả lời

0

CẬP NHẬT câu trả lời

Xem conrad10781 của. Câu trả lời này đã lỗi thời vì trang Wiki gốc mà tôi đã liên kết đã được lưu trữ, mặc dù nó đã làm nổi bật những mô-đun nào có thể xác thực cả cú pháp và lược đồ.

INFO lỗi thời

Có rất nhiều các phân tích cú pháp XML có sẵn thông qua npm.

Việc triển khai gốc (chẳng hạn như nút-expat) yêu cầu xây dựng phần mở rộng C++ để có thể phá vỡ yêu cầu cho mô-đun hoạt động trong cả Windows và Linux nhưng do tốc độ mà chúng cung cấp, bạn nên dùng thử , đặc biệt nếu bạn đang xử lý các tệp XML lớn.

xmldom sẽ có thể cung cấp một số phân tích cú pháp XML rất đơn giản từ chuỗi. Sau đó bạn có thể tạo một hàm để trả về true/false tùy thuộc vào đầu ra của phân tích cú pháp (xem cách DOMParser trả về lỗi).

+0

Các liên kết đầu tiên sang Mô-đun phân tích cú pháp XML hiện đã bị hỏng. – spoulson

+0

@spoulson cảm ơn vì đã chú ý đến điều đó. Đã giải quyết để trỏ trực tiếp đến trang web của npm. –

8

Tôi biết đây là một bài đăng cũ hơn, nhưng tôi đã xem nó, và không may, câu trả lời của Ankit không hữu ích cho tôi. Nó tập trung tốt nhất vào việc đầu vào có phải là cú pháp XML hợp lệ hay không, không cho dù được tuân theo một lược đồ, là một phần của OP.

Tôi đã tìm thấy libxmljs là giải pháp tốt nhất cho những gì bạn đang tìm kiếm. Bạn có thể phân tích cú pháp, xác thực chuỗi cơ bản, cũng như cấu trúc chi tiết.

Một ví dụ về kiểm tra cho một cú pháp XML sẽ có cái gì đó như:

program.isValidSyntaxStructure = function (text) { 
    try { 
     libxmljs.parseXml(text); 
    } catch (e) { 
     return false; 
    } 

    return true; 
}; 

Một ví dụ về kiểm tra cho một cấu trúc cụ thể/schema sẽ có cái gì đó như:

var xsd = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="comment" type="xs:string"/></xs:schema>'; 
var xml_valid = '<?xml version="1.0"?><comment>A comment</comment>'; 
var xml_invalid = '<?xml version="1.0"?><commentt>A comment</commentt>'; 

var xsdDoc = libxml.parseXml(xsd); 
var xmlDocValid = libxml.parseXml(xml_valid); 
var xmlDocInvalid = libxml.parseXml(xml_invalid); 

assert.equal(xmlDocValid.validate(xsdDoc), true); 
assert.equal(xmlDocInvalid.validate(xsdDoc), false); 
Các vấn đề liên quan