潜在的に「乱雑な」HTMLを解析するオプションを使用NSXMLDocument
しています。に渡した文字列が 12 文字未満でない限り、テストしたすべてのNSXMLDocumentTidyHTML
シナリオでうまく機能しました。NSXMLDocument
-initWithXMLString:options:error:
問題を説明するために、次の 2 行のコードで簡単な例を考えてみましょう。
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 ドキュメントです。
ただし、この文字列から 1 文字を削除すると (<p>Helo</p>
たとえば、) NSXMLDocumentTidyHTML
、オプションとして指定されていないかのように、出力が大幅に変更されます。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<p>Helo</p>
私はこれをさまざまな長さとさまざまなタグのさらに多くの文字列でテストしました(<tr>123</tr>
vs. <tr>12</tr>
、たとえば)が、同じ問題が発生しました。12文字未満の文字列を提供するときに期待するHTMLを生成できない理由について、誰か提案はありますか?