HTML 문자열을 구문 분석하고 쿼리를 수행하고 일부 노드를 얻은 다음 이러한 노드에 대해 HTML을 출력하는 메소드를 작성하고 있습니다.libxml을 사용하여 HTML 엔터티 유지
나는 libxml을 사용하고, 입력 HTML을로드하고 구문 분석 관리해야하고, 출력은 내가 모든 HTML 엔티티 보존 원하고, libxml 것을 제외하고, 원하는 노드에 대한 HTML 문자열이 변환 보인다 연관된 UTF-8 문자로 변환합니다. 그 문자 엔티티가 변환됩니다 제외하고,이 노드 벌금의 HTML 콘텐츠를 덤프
NSString *HTMLString = ...
NSData *documentData = [HTMLString dataUsingEncoding:NSUTF8StringEncoding];
//Create the document
xmlDocPtr doc = htmlReadMemory([documentData bytes],
[documentData length],
"",
NULL,
HTML_PARSE_NOWARNING | HTML_PARSE_NOERROR);
//Get the node I want to output
xmlNodePtr node = ...
//Create the node buffer and fill it with the node content
xmlBufferPtr nodeBuffer = xmlBufferCreate();
htmlNodeDump(nodeBuffer, doc, node);
...
: 여기
내가 (코드는 오브젝티브 C 프로젝트의 일부입니다) 지금까지있어 무엇 UTF-8 문자 - 입력 HTML에 존재하는 유일한 엔터티는’
및
‘
과 같은 따옴표입니다. 노드의 HTML 콘텐츠를 쓸 때 보존하려고합니다.
HTML 구문 분석 및 HTML 트리 기능과 관련된 libxml 문서를 검토 한 결과 HTML 엔티티에 대한 정보를 찾지 못하는 것 같습니다. 나는 이것이 파싱이나 출력 중에 이루어지는 것인지에 대해서도 확신하지 못한다. 나는 단순히 노드의 내용을 xmlNodeGetContent()
을 사용하여 출력하려고 시도했으며 엔티티도 상응하는 UTF8 문자로 대체 되었기 때문에 구문 분석 문제로 의심 스럽지만 잘 모르겠습니다.