2009-12-16 22 views
21

Vì vậy, cũng giống như một dự án thú vị, tôi quyết định tôi sẽ viết trình phân tích cú pháp XML của riêng mình. Không, không phân tích cú pháp một tài liệu cụ thể, và không, không sử dụng thư viện phân tích cú pháp XML. Tôi có nghĩa là viết mã để phân tích bất kỳ tài liệu XML thành một cấu trúc dữ liệu có thể sử dụng. Chỉ vì tôi thích thử thách. :-)Cuộn thuật toán phân tích cú pháp XML/XML của riêng bạn?

Với điều đó đã nói, cho đến nay nó được chứng minh là ... thú vị. Nó không phải là dễ dàng để phân tích cú pháp (đặc biệt là khi bạn bắt đầu có tính đến các ký tự đặc biệt, CDATA, thẻ trống, ý kiến, vv) như ban đầu nó nhìn.

Có bất kỳ thuật toán hoặc giải thích phân tích cú pháp XML được ghi lại ở bất cứ đâu mà bất kỳ ai biết không? Dường như có các hàng đợi được sắp xếp tài liệu và Stack và BTree và v.v., v.v. ở khắp mọi nơi, nhưng tôi không chắc là tôi từng thấy một thuật toán phân tích cú pháp XML đơn giản, được ghi chép đầy đủ ...

Tôi lặp lại: Tôi đang không phải để tìm thư viện trình phân tích cú pháp dựng sẵn! Tôi đang tìm kiếm thông tin trên cách tạo thư viện phân tích cú pháp dựng sẵn của riêng mình! Đừng nói với tôi "sử dụng người nước ngoài" hoặc "sử dụng SAX" hoặc bất cứ điều gì. Đó không phải là những gì tôi yêu cầu.

Trả lời

17

Antlr cung cấp số tutorial khi phân tích cú pháp XML. Nó phá vỡ quy trình thành các giai đoạn: lexing, phân tích cú pháp, phân tích cú pháp cây, v.v. Trông khá thú vị.

+0

+1 để đề xuất trình tạo trình phân tích cú pháp – kdgregory

-9

http://expat.sourceforge.net/

Expat là một thư viện phân tích cú pháp XML được viết bằng C. Đó là một phân tích cú pháp dòng theo định hướng trong đó một ứng dụng đăng ký xử lý cho điều phân tích cú pháp có thể tìm thấy trong tài liệu XML (như bắt đầu tags). Một bài viết giới thiệu về việc sử dụng Expat có sẵn trên xml.com.

+5

Vui lòng đọc câu hỏi. Đây chính xác là những gì tôi không * muốn. Tôi muốn * viết một cái gì đó như người nước ngoài *, không chỉ * sử dụng người nước ngoài *. –

1

Tôi không biết nếu nó sẽ "gian lận" trong sách của bạn, nhưng bạn có thể thử phân tích cú pháp XML của mình bằng trình phân tích cú pháp ngôn ngữ đa năng sẵn có như ANTLR. Kết quả sẽ là một danh sách các thẻ (nếu bạn chỉ sử dụng lexer) hoặc một cây phân tích cú pháp (nếu bạn bao gồm trình phân tích cú pháp) và sau đó bạn có thể xây dựng lại cây phân tích gần như 1: 1 thành một cấu trúc XML.

Có thể. Tôi đã không nghĩ về những cách thức mà XML có thể khác với thức ăn tự nhiên ANTLR "bình thường" như ngôn ngữ lập trình, và liệu bạn có thể định nghĩa một ngữ pháp phù hợp hay không.

-6

VTD-XML có lẽ là kỹ thuật phân tích cú pháp đơn giản nhất có thể ...

+1

Đọc câu hỏi, tôi không tìm kiếm thư viện dựng sẵn, tôi đang tìm các thuật toán hoặc hướng dẫn về cách tạo thư viện của riêng mình *. –

+0

Tôi nghĩ rằng tôi đang đề cập đến các mô tả mã thông báo ảo đó là những gì vtd-xml thực hiện –

+0

Spam, một lần nữa? Bạn không học –

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