2010-02-21 2 views
19

들어오는 HTML을 치료하기 위해 내 응용 프로그램에 HTML Tidy를 내장했습니다. 그러나 Tidy는 엄청난 양의 버그를 가지고 있으며 소스 코드를 직접 수정하는 것이 최악의 악몽입니다. 깔끔한 소스 코드는 읽을 수없는 가증물입니다. 천 + 라인 함수, 불량 변수 네이밍, 스파게티 코드 등. 정말 끔찍합니다.HTML Tidy의 대안이 있습니까?

최악의 경우 공식 개발 seems to have ceased. 지난 12 개월 동안 세 개의 공식 CVS 저장소에 트랜잭션이 기록되었습니다. 하지만 그것은 죽었어 그보다 훨씬 더 묻혀있다 ...

그래서 내가 깔끔하게 할 수있는 일을 할 수있는 OSS C 또는 C++ 응용 프로그램/라이브러리를 찾고있다. (느낌이들 때) : 나쁜 HTML 마크 업 수정 그리고 그것을 유효한 XHTML로 변형시킨다 (이것은 내가 관심을 가지고있는 부분이다). 그리고 모든 종류의 나쁜 마크 업을 의미합니다.

거기에 뭔가가 있습니까?

EDIT : XML 처리 도구로 DOM 트리에서 조작하고 XHTML 스펙을 일반적으로 준수해야합니다. 내 응용 프로그램은 사용자로부터 HTML을 받아 들여야하며 (이는 모든 종류의 방식에서 유효하지 않은 경우가 많다) 유효한 XHTML을 출력해야합니다. 사용자가 손으로 편집하고 이후에 확인하지 않았기 때문에 일반적으로 브라우저에 표시되지 않는 HTML도 처리 할 수 ​​있어야합니다.

Tidy의 오류 수정 파서에 대한 드롭 인 대체. 소스가 읽기 쉽고 버그를 직접 고칠 수 있거나 버그 수정을 적시에 제공하는 활동적인 개발자가있는 경우 버그는 신경 쓰지 않아도됩니다.

+0

이것이 어떤 용도로 사용되는지 모르겠지만 TagSoup (http : //home.ccil.)라는 Java 라이브러리가 있습니다.org/~ cowan/XML/tagsoup /)에는 분명히 C++ 포트가 두 개 있습니다. 아마도 하나는 무료가 아니고 다른 하나는 유지되지 않을 수도 있습니다. SAX 이벤트 스트림을 생성하지만 XML 출력으로 변환하는 것은 올바른 파이프를 노즐에 연결하는 문제 일뿐입니다. 결코 그것을 사용하지 마십시오. –

답변

2

이 도구를 어떻게 사용할 계획입니까? 에서와 같이 정적 웹 페이지를 수정 하시겠습니까, 아니면 다른 조작 전에 필터링 단계를 원하십니까? 그래서 일부 도구는 버그가있는 웹 페이지를 처리 ​​할 수 ​​있습니까?

필자는 필자가 개인적으로 Python의 BeautifulSoup 또는 lxml 위에 필자 자신의 도구를 작성합니다. 필자는 필자가 원할 때마다 필자가 직접 작성했습니다.

+0

파이썬이나 그 라이브러리를 사용할 수 없습니다. 이것은 GUI, 원시 코드 응용 프로그램입니다. 파이썬 인터프리터를 통합하는 것은 옵션이 아닙니다. – Lucas

+0

글쎄, GUI 네이티브 코드 애플 리케이션, 기술적으로 Python 인터프리터를 통합 * 옵션이지만, 아마도 찬성과 장단점을 평가할 때 호소하지 않을 수도 있습니다. http://docs.python.org/extending/embedding.html –

+0

그러면 lxml의 네이티브 바인딩을 살펴볼 것입니다. 끔찍하게 부서진 html의 경우에도 파싱을 꽤 잘 할 수 있습니다. – pavpanchekha

2

는 단정를 지원하는 새로운, 좋은, 적절한 HTML 5가, 그래서 기존의 대안은, 추한 TidyTidy (GitHub repository) 일 것이다.

0

실제로 코드를 수정하려면 코드를 사용하는 것이 가장 좋습니다. 여전히 HTML 깔끔합니다. 많은 사람들이 있지만 Tidy를 제외하고 HTML에 대한 오류를 복구하는 것은 아닙니다.

언뜻보기에, 현대 OOP 프로그래머는 소스 코드가 읽을 수 가증이라고 생각 할 수 있지만, C의 세계에서, 깔끔한 고급 OO 개념을 많이 사용하고 매우 사려 깊은 인터페이스를 제공 꽤 정교한 라이브러리입니다 순수한 C API로 거의 모든 기능을 제공합니다.

캐주얼 한 개발자는 길을 잃지 만, 잠긴 후에는 코드가 매우 아름답습니다. 부여 된 명명 규칙은 입니다.은 좋지 않습니다. 그러나 홍보는 환영합니다!