似乎所有实体都是使用
杀死的tags = "<p>test umlauts ö</p>"
Nokogiri::XML.fragment(tags)
结果:
<p>test umlauts </p>
上述方法调用Nokogiri::XML::DocumentFragment.parse(tags)
并调用方法
Nokogiri::XML::DocumentFragment.new(XML::Document.new, tags)
。
关于nokogiri文档,将执行此代码:
def initialize document, tags=nil
if tags
parser = if self.kind_of?(Nokogiri::HTML::DocumentFragment)
HTML::SAX::Parser.new(FragmentHandler.new(self, tags))
else
XML::SAX::Parser.new(FragmentHandler.new(self, tags))
end
parser.parse(tags)
end
end
我认为我们正在处理XML :: SAX :: Parser和相应的FragmentHandler。挖掘代码并没有提示;我必须设置哪些参数才能获得正确的结果?
答案 0 :(得分:3)
oouml不是XML中的预定义实体。如果要在XHTML中允许HTML实体引用,则需要使用在doctype中读取外部DTD的解析器。这是很多努力;如果你有与实体引用的HTML兼容的XHTML,你可能更喜欢使用HTML解析器。