我有一些示例HTML,我已经用一些特殊的标签标记了将被其他程序使用,html的示例如下所示。您应该注意<START:organization>..<END>
元素。
<html>
<head/>
<body>
<ul>
<li> <START:organization> Advanced Integrated Pest Management <END> </li>
<li> <START:organization> American Bakers Association <END> </li>
</ul>
</body>
</html>
我想使用Nokogiri预处理HTML,以便轻松删除不相关的标签,例如<script>
。我为Nokogiri Document类创建了以下扩展:
module Nokogiri
module HTML
class Document
def prepare_html
xpath("//script").remove
to_html.remove_new_lines
end
end
end
end
问题是Nokogiri正在将<START:organization>
元素更改为<organization>
。
我是否可以保留HTML以维护我的自定义标记标记?
答案 0 :(得分:1)
远景,但尝试修补Nokogiri :: XML :: Document和/或使用to_xml
- 名称空间在HTML中无效,所以我猜Nokogiri不会解析/生成它们。
当然,您的<END>
标记也不是有效的XML,因此您的文档在任何一种标准中都无效。
答案 1 :(得分:1)
如果您的标记有效,您可以使用XML解析器而不是HTML解析器来解析它。
编辑:刚刚意识到这一点:
<START:organization>..<END>
这里有几个问题。首先,开始和结束标记不匹配。如果开始标记是'then it should be terminated by
`。其次,在节点名称中使用冒号在XML中具有一定的含义 - 即第一部分是命名空间而第二部分是节点名称。在这种情况下,您应该使用名为“organization”的标记,或者将其包含在属性中。第一个可能是最有意义的。所以:
<organization>..</organization>
如果你不能改变它,那么就不能使用XML / HTML解析器,因为它不是有效的XML也不是HTML。
答案 2 :(得分:1)
然而,您可以执行以下操作之一: