2010-02-21 30 views
19

Tôi đã nhúng HTML Tidy trong ứng dụng của mình để xóa HTML đến. Nhưng Tidy có một số lượng lớn các lỗi và sửa chúng trực tiếp trong nguồn là cơn ác mộng tồi tệ nhất của tôi. Mã nguồn gọn gàng là abomination không đọc được. Nghìn + dòng chức năng, tên biến nghèo, mã spaghetti vv Nó thực sự khủng khiếp.Có cách nào thay thế cho HTML Tidy không?

Tệ hơn nữa, phát triển chính thức seems to have ceased. Trong 12 tháng qua, đã có ba ghi các giao dịch vào repo CVS chính thức. Nhưng nó đã chết và bị chôn vùi lâu hơn ...

Vì vậy, tôi đang tìm một ứng dụng OSS C hoặc C++/thư viện có thể làm những gì Tidy có thể (khi nó cảm thấy như nó): sửa lỗi đánh dấu HTML xấu và biến nó thành XHTML hợp lệ (đây là phần tôi quan tâm). Và tôi có nghĩa là tất cả các loại đánh dấu xấu.

Có điều gì giống như vậy không?

EDIT: Tôi cần cả hai thao tác trên cây DOM bằng công cụ xử lý XML và để tuân thủ chung với thông số XHTML. Ứng dụng của tôi cần chấp nhận HTML từ người dùng (thường không hợp lệ theo tất cả các cách) và đầu ra XHTML hợp lệ. Nó cần để có thể xử lý ngay cả HTML mà thông thường sẽ không hiển thị trong trình duyệt bởi vì người dùng đã chỉnh sửa nó bằng tay và không kiểm tra sau đó.

Thay thế thả cho trình phân tích cú pháp sửa lỗi của Tidy ... không hút. Tôi không nhớ các lỗi nếu nguồn có thể đọc được và tôi có thể tự khắc phục sự cố hoặc nếu có các nhà phát triển đang hoạt động cung cấp bản sửa lỗi kịp thời.

+0

Không biết nếu đây là bất kỳ sử dụng cho bạn, nhưng có một thư viện Java được gọi là TagSoup (http: //home.ccil.org/~ cowan/XML/tagsoup /) mà dường như có một vài cổng C++, có thể, ngoại trừ một số không miễn phí và tôi không chắc chắn về những thứ khác được duy trì. Nó tạo ra một luồng các sự kiện SAX, nhưng biến nó thành đầu ra XML chỉ là vấn đề gắn ống đúng vào đầu vòi. Không bao giờ sử dụng nó bản thân mình, mặc dù. –

Trả lời

2

Bạn có thể cho chúng tôi biết bạn dự định sử dụng công cụ này để làm gì không? Như trong, bạn có muốn sửa các trang web tĩnh hay bạn muốn một số bước lọc trước các thao tác khác, để một số công cụ có thể xử lý các trang web bị lỗi?

Cá nhân, tôi viết công cụ của riêng mình trên đỉnh BeautifulSoup của Python hoặc lxml bất cứ khi nào tôi cần --- nó có tối đa một tá dòng lệnh và thực hiện phần lớn những gì tôi muốn.

+0

Tôi không thể sử dụng Python hoặc thư viện của nó. Đây là một GUI, ứng dụng mã nguồn gốc. Việc tích hợp trình thông dịch Python không phải là một tùy chọn. – Lucas

+0

Vâng, đối với ứng dụng mã nguồn gốc GUI, về mặt kỹ thuật tích hợp trình thông dịch Python * là * một tùy chọn, nhưng có thể không phải là một lựa chọn hấp dẫn khi bạn đánh giá ưu và khuyết điểm. http://docs.python.org/extending/embedding.html –

+0

Sau đó, tôi sẽ xem xét các liên kết gốc cho lxml --- nó có thể phân tích cú pháp khá tốt, ngay cả đối với html bị hỏng khủng khiếp. – pavpanchekha

1

Hãy thử Khá khác. Nó là một thuật toán làm đẹp tuyệt vời và nó không tạo ra bất kỳ giả định nào về đầu vào của bạn.

http://prettydiff.com/?m=beautify&html

+3

Tiết lộ chi nhánh của bạn. –

2

Có một mới, đẹp, thích hợp HTML 5 hỗ trợ Tidy, vì vậy thay thế cho cũ, xấu xí Tidy sẽ Tidy (GitHub repository).

0

Đối với một cái gì đó thực sự là sửa lỗi mã, đặt cược tốt nhất của bạn vẫn là HTML gọn gàng. Có rất nhiều linters, nhưng không thực sự bất cứ điều gì mà sửa chữa lỗi HTML, khác với Tidy. Thoạt nhìn, các lập trình viên OOP hiện đại có thể nghĩ rằng mã nguồn là abomination không thể đọc được, nhưng trong thế giới C, Tidy là thư viện khá tinh vi sử dụng rất nhiều khái niệm OO nâng cao và cung cấp một giao diện rất chu đáo cho thấy gần như tất cả các chức năng của nó trong một API C thuần túy.

Nhà phát triển bình thường sẽ bị mất, nhưng sau khi đắm mình, mã này khá đẹp. Cấp, quy ước đặt tên một sự cố hỗn hợp, nhưng PR được hoan nghênh!

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