2010-09-17 16 views
23

Tôi là một trình phân tích cú pháp XML rất nhỏ cho một dự án được nhúng. Nó cần phải biên dịch xuống 10-15k, không cần phải xác nhận, và cần phải đơn giản và di động.Có một trình phân tích cú pháp XML nhỏ bé tốt cho một dự án C được nhúng không?

+2

Tương tự như [ Thư viện XML C cho các hệ thống nhúng ] (http://stackoverflow.com/questions/1131701/c-xml-library-for-embedded-systems), mặc dù tôi không thấy bất kỳ câu trả lời hay nào . –

+1

XML có phải là một yêu cầu tuyệt đối không? 15k là khá chặt chẽ cho một cái gì đó bạn không tay-roll để đáp ứng yêu cầu của bạn, nhưng tôi sẽ ngạc nhiên nếu bạn không thể tìm thấy một phân tích cú pháp JSON off-the-shelf đó là nhỏ. – llasram

+1

Hi llasram, cảm ơn cho bình luận của bạn. Có, XML là một yêu cầu. Tôi đã giải quyết vấn đề của mình cuối cùng bằng cách thực hiện điều đó: bàn tay đang tung một trình phân tích cú pháp XML đáp ứng các yêu cầu của tôi. Mã kết quả xuất hiện chỉ bằng một vài K ... nhưng sau đó một lần nữa các yêu cầu phân tích cú pháp XML của tôi trở nên khá đơn giản khi tôi nghiên cứu chúng chặt chẽ. – Joe

Trả lời

5

Bạn luôn có thể triển khai thực hiện của riêng mình. Tôi đã làm điều này một vài năm trước đây, và bây giờ chỉ cần thêm một số tài liệu giao diện cho mã số tại mercurial.intuxication.org/hg/cstuff.

Xin lưu ý rằng trình phân tích cú pháp chưa bao giờ được sử dụng trong môi trường sản xuất hoặc thậm chí được thử nghiệm nhiều hơn sơ suất; các nhận xét cũng không tồn tại, vì vậy hãy giải trí mã nếu bạn cần sửa đổi nó;)

+0

Cảm ơn Christoph. Đó là chính xác những gì tôi đã làm trong tay cuối cuộn thực hiện của riêng tôi. Tôi thực sự đã triển khai nó trước bài đăng của bạn, nhưng dù sao cũng được - tôi sẽ xem xét việc triển khai của bạn và so sánh với của riêng tôi. – Joe

+0

@Christoph, điều này trông giống như những gì tôi đang tìm kiếm — cảm ơn bạn đã đăng nó! – mikepurvis

7

Tôi đã có thể tinh chỉnh các cờ biên dịch của các thư viện phân tích cú pháp XML sau cho C và cắt giảm hơn 50% kích thước của chúng trên máy tính Ubuntu của tôi. Mini-XML là người duy nhất gần với những gì mà bạn yêu cầu:

Có một cuộc thảo luận tốt ở đây:

C XML library for Embedded Systems

6

Tôi đang tìm kiếm cho một thời gian gần đây và tôi đã tìm thấy SimpleXML (http://simplexml.sourceforge.net/) và sxmlc lớn hơn một chút (http://sourceforge.net/projects/sxmlc/)

Tôi thấy SimpleXML thú vị hơn vì nó đơn giản hơn, tôi không thử nó nhưng có vẻ như nó khớp với những gì tôi nghĩ, thư viện tệp đơn (well .h và .c) không hỗ trợ các tính năng XML kỳ lạ.

Trình phân tích cú pháp XML đơn giản là một trình phân tích cú pháp nhỏ cho một tập hợp con của XML (mọi thứ ngoại trừ các thực thể và không gian tên). Nó sử dụng giao diện "một lần xử lý cho mỗi thẻ" đơn giản và phù hợp để sử dụng với các thiết bị có tài nguyên hạn chế.

1

Tôi đã phát triển sxmlc ("Simple XML in C") chính xác như sau: ít tệp nhất có thể. Chỉ có một tệp, với một tệp "tìm kiếm" tùy chọn mà bạn có thể thêm nếu bạn cần tìm kiếm giống như XPath thông qua tài liệu.

Nó xử lý tải kiểu DOM (toàn bộ cây tài liệu trong bộ nhớ) hoặc tải kiểu SAX (gọi lại bất kỳ khi nào nút được đọc với thuộc tính của nó hoặc văn bản được đọc trên nút). Nếu bộ nhớ là một mối quan tâm bạn sẽ quan tâm đến SAX.

Một số người cũng quan tâm bởi thực tế là nó có thể phân tích cú pháp tệp hoặc bộ đệm bộ nhớ (hữu ích khi bạn nhận XML dưới dạng trả lời trên web).

Nó xử lý các tệp Unicode từ phiên bản 4 đến #define, vì vậy nếu bạn không cần Unicode, chỉ cần không xác định SXMLC_UNICODE và sẽ không có bất kỳ sự gia tăng trọng lượng nào trong tệp nhị phân.

Tôi cũng phải nói rằng giữ các nhận xét khi ghi lại XML vào đĩa! Tôi luôn cảm thấy tiếc khi mọi người dành thời gian giải thích cú pháp cấu hình trong các tệp XML ("đặt" true "để cho phép nén đặc biệt ..."), được xóa khi lưu lại bởi ứng dụng.

Nó biên dịch dưới Linux và Windows. Tôi đã có phản hồi tốt từ những người vui vẻ nhúng nó vào bộ định tuyến.

Vì tôi muốn giữ nó đơn giản nhất có thể, tôi có thể sẽ không thêm các chức năng mới mà là cải thiện các chức năng hiện có (và sửa lỗi, tất nhiên! :)). Tôi không tích cực trong sự phát triển của nó, trừ khi các lỗi được báo cáo.

4

Hãy thử yxml - đó thực sự là trình phân tích cú pháp không hợp lệ nhỏ và nhanh.

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