2009-05-12 15 views
8

Có ai quen thuộc với định dạng tài liệu RTF và phân tích cú pháp bằng bất kỳ libaries Java nào không. Cách mọi người chuẩn đã làm điều này là sử dụng RTFEditorKit trong Swing API JDK:Phân tích cú pháp tài liệu RTF bằng Java/JavaCC

Swing RTFEditorKit API

nhưng nó không phải là chính xác khi nói đến phân tích tài liệu RTF. Trên thực tế, có một nhận xét trong API:

Hỗ trợ RTF không được viết bởi Nhóm xoay. Trong tương lai, chúng tôi hy vọng sẽ cải thiện hỗ trợ được cung cấp.

Tôi không nghĩ rằng tôi sẽ phải đợi cho điều này xảy ra :)

Cách tiếp cận khác thực hiện là để xác định một ngữ pháp sử dụng javacc và tạo ra một phân tích cú pháp. Điều này hoạt động tốt hơn, nhưng tôi gặp khó khăn trong việc tìm kiếm một ngữ pháp hoàn chỉnh. Tôi đã thử:

PMD Applied JavaCC Grammar

đó là ok và sau đây (đó là tốt nhất cho đến nay).

Koders RTFParserDelegate and ETranslate Grammar

Có triển khai khác nhau của ngữ pháp eTranslate về (Tôi biết Nutch API có thể sử dụng này). Có ai biết đó là ngữ pháp chính xác nhất hay liệu có cách tiếp cận tốt hơn cho điều này không?

tôi có thể bắt đầu cày thông qua các tài liệu javacc hiểu các tập tin .jj và thử nghiệm nó chống lại các tập tin RTF ... Đây là cách tiếp cận hiện tại của tôi, nhưng nó tham gia một thời gian ... bất kỳ trợ giúp sẽ được đánh giá cao

+1

Không thể trả lời câu hỏi thực tế của bạn, nhưng có vẻ như cách tiếp cận xác thực tốt hơn (thay vì làm việc thông qua ngữ pháp) là tạo tệp thử nghiệm và xác minh rằng chúng được phân tích cú pháp chính xác. Tuy nhiên, như tôi nhớ lại, các trình phân tích cú pháp RTF được phép bỏ qua bất kỳ cấu trúc nào mà chúng không hiểu, cho phép khả năng tương thích ngược. – kdgregory

+0

Trình phân tích cú pháp ETranslate thực sự hoạt động rất tốt khi trích xuất tài liệu RTF (99% bộ tôi có), nhưng nó không được hỗ trợ và không có sẵn từ nguồn trung tâm. Sẽ cố gắng và nhận được điều này lên trên Google Code một nơi nào đó ... không chắc chắn về giấy phép, nó chỉ cần một số sửa lỗi trong ngữ pháp tôi tin rằng ... – Jon

+0

bạn đã thực hiện bất kỳ tiến bộ với điều này? – pvgoddijn

Trả lời

0

Có lẽ, nguồn của OpenOffice chứa những gì bạn đang tìm kiếm.

+0

Tôi đã xem xét một OpenOffice và gửi các tài liệu tới nó với JODExtractor, đây là một cách tốt để phân tích các tài liệu nhưng giải pháp khá nặng vì bạn cần một máy chủ với các thư viện X được cài đặt vv ... chưa loại trừ nó, vẫn đang điều tra, nhưng xem xét các giải pháp "nhẹ" hơn. – Jon

1

Có ai biết ngữ pháp chính xác nhất hay liệu có là cách tiếp cận tốt hơn về điều này không?

Nhiều năm trước, tôi đã dành chút thời gian đọc RTF (Wikipedia) với C#. Tôi nói đọc bởi vì nếu bạn hiểu RTF chi tiết và sử dụng nó theo cách nó được thiết kế, bạn sẽ nhận ra rằng RTF không có nghĩa là được đọc toàn bộ và phân tích cú pháp như một toàn bộ hơn và hơn nữa khi chỉnh sửa. Trong tài liệu hướng dẫn, bạn sẽ tìm thấy syntax cho RTF, nhưng đừng nhầm lẫn với việc tin rằng bạn nên sử dụng trình phân tích cú pháp/phân tích cú pháp. Trong tài liệu, họ cung cấp sample reader cho RTF.

Hãy nhớ rằng RTF đã được tạo từ nhiều năm trước khi bộ nhớ được đo bằng KB chứ không phải MB và chỉnh sửa tài liệu dài vài trăm trang theo cách thông thường sẽ là tài nguyên hệ thống thuế. Vì vậy, RFT có khả năng được chỉnh sửa trong các phần nhỏ hơn mà không cần tải hoặc sửa đổi toàn bộ tài liệu. Đây là những gì mang lại cho nó khả năng làm việc trên các tài liệu lớn như vậy với bộ nhớ hạn chế. Đó cũng là lý do tại sao cú pháp có thể có vẻ lạ lúc đầu.