1

我正在使用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>

<p>Hello</p>传入的整个字符串是 12 个字符(

但是,从该字符串中删除一个字符(<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 有任何建议?

4

0 回答 0