Почему NSXMLDocumentTidyHTML игнорируется при создании NSXMLDocument длиной менее 12 символов?
Я использую NSXMLDocument
с NSXMLDocumentTidyHTML
Возможность разбора потенциально "неопрятного" HTML. Это работало хорошо в каждом сценарии, который я тестировал, если только строка, в которую я прошел NSXMLDocument
"s -initWithXMLString:options:error:
менее 12 символов.
Чтобы продемонстрировать проблему, рассмотрим тривиальный пример в следующих двух строках кода:
NSXMLDocument *document = [[NSXMLDocument alloc] initWithXMLString:@"<p>Hello</p>" options:NSXMLDocumentTidyHTML error:NULL];
NSLog(@"%@", [document XMLStringWithOptions:NSXMLNodePrettyPrint]);
Это выводит на консоль следующее:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<p>Hello</p>
</body>
</html>
Вся передаваемая строка была 12 символов (<p>Hello</p>
), и хотя это всего лишь демонстрация, выходные данные, как я и ожидал: HTML-документ с пустым заголовком и тегом абзаца внутри тела.
Однако удалите один символ из этой строки (<p>Helo</p>
например), и результат резко меняется, как будто NSXMLDocumentTidyHTML
не был указан как опция:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<p>Helo</p>
Я проверил это с большим количеством строк различной длины и с разными тегами (<tr>123</tr>
против <tr>12</tr>
например) и испытывают ту же проблему. Кто-нибудь есть какие-либо предложения о том, почему это не будет производить HTML, который я ожидал бы при предоставлении строки длиной менее 12 символов?