- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
当我注意到像“6:30pm”这样的时间正在变成“30pm”时,在尝试清理一些 html 片段时,Loofah 和 Sanitize 都遇到了一些奇怪的行为。
做了一些调查,发现了以下内容:
Loofah.scrub_fragment("<span>asdfasdf 6:30 pm</span>", :strip).to_html
#=> "<span>asdfasdf 30 pm</span>"
Loofah.scrub_fragment("6:30 pm", :strip).to_html
#=> "6:30 pm"
Loofah.scrub_fragment("<foo>asdfasdf 6:30 pm</foo>", :strip).to_html
#=> "asdfasdf 6:30 pm"
Loofah.scrub_fragment("bar:30 pm", :strip).to_html
#=> "bar:30 pm"
Loofah.scrub_fragment("<span>bar:30 pm</span>", :strip).to_html
#=> "<span>30 pm</span>"
Loofah.scrub_fragment("<span>bar: asdfasdfadsf pm</span>", :strip).to_html
#=> "<span>bar: asdfasdfadsf pm</span>"
Loofah(:prune 等)和 Sanitize 的所有变体都是这种情况,因此我假设这是它们两者共有的代码问题。在清理之前,我需要做些什么来转义代码中的冒号吗?
编辑 1我意识到我忘记提到我正在使用 jruby ( jruby 1.7.0 (1.9.3p203) )。我正在尝试弄清楚 nokogiri 中是否可能存在问题(这是这两个 gems 的基础?)
编辑 2通过进一步挖掘,它看起来可能是 Jruby 上的 Nokogiri 中的一个问题(我使用的是 nokagiri 的 1.5.5 版,这是值得的)。我在 Jruby 和 Ruby 1.9.3 上检查了 nokogiri 的片段解析器:
Jruby 1.7.0:意外结果
doc = Nokogiri::HTML.fragment("<span>3:30pm</span>")
=> #(DocumentFragment:0x5fbc {
name = "#document-fragment",
children = [
#(Element:0x5fc0 { name = "span", children = [ #(Text "30pm")] })]
})
Ruby 1.9.3:预期结果
doc = Nokogiri::HTML.fragment("<span>3:30pm</span>")
=> #(DocumentFragment:0x3fc4b102055c {
name = "#document-fragment",
children = [
#(Element:0x3fc4b101fff8 {
name = "span",
children = [ #(Text "3:30pm")]
})]
})
将尝试继续挖掘,但欢迎提出任何建议。
最佳答案
我认为这是 Nokogiri 中的回归错误。我能够重现您的问题,并尝试使用多个版本的 Nokogiri。
它在 1.5.0 中正常工作:
jruby-1.6.7.2 :002 > gem 'nokogiri', '=1.5.0'
=> true
jruby-1.6.7.2 :003 > require 'nokogiri'
=> true
jruby-1.6.7.2 :004 > doc = Nokogiri::HTML.fragment("<span>3:30pm</span>")
=> #<Nokogiri::HTML::DocumentFragment:0x7d4 name="#document-fragment" children=[#<Nokogiri::XML::Element:0x7d2 name="span" children=[#<Nokogiri::XML::Text:0x7d0 "3:30pm">]>]>
它在 1.5.1 中失败了:
jruby-1.6.7.2 :002 > gem 'nokogiri', '=1.5.1'
=> true
jruby-1.6.7.2 :003 > require 'nokogiri'
=> true
jruby-1.6.7.2 :004 > doc = Nokogiri::HTML.fragment("<span>3:30pm</span>")
=> #<Nokogiri::HTML::DocumentFragment:0x7d4 name="#document-fragment" children=[#<Nokogiri::XML::Element:0x7d2 name="span" children=[#<Nokogiri::XML::Text:0x7d0 "30pm">]>]>
编辑:重要的是要注意 Nokogiri 是围绕令人敬畏的 libxml2 构建的C 库在特性、速度和处理格式错误的标记的能力方面确实无与伦比。 JRuby 实现是尝试使用 Xerces 来匹配它和 NekoHTML .我认为他们做得非常出色,使得 JRuby 实现几乎完全匹配其 MRI 对应的功能(如果不是速度的话),掩盖了截然不同的实现之间的差异。话虽这么说,但仍然会不时出现边缘情况。
我继续提交了 bug report在 Nokogiri 上。
关于ruby - 清理 gem(和丝瓜络)在标签内前导冒号之前删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409801/
我目前有以下选择语句: SELECT CONCAT(TRUNCATE(HOUR("215:00:36")/24,0),":",HOUR("215:00:36")%24,":",MINUTE("215:
我正在尝试将字符串编码为 base36。 static char *decode(unsigned long long value) { char base36[37] = "01234567
如果我有一个输入字符串,input 有三个或更多小数位,我希望该字符串由单独的 if-loop 处理。 我为此目的创建了以下控制台程序,如果(第一个约束)有小数点 .,则输入 if-loop字符串和(
我有一小段代码,它有一个整数数组,其中包含一些前导 0 的元素。 int arr[]={012,234,071}; cout<
如何从强制范围中删除前导,以便 Some field Any 1 2 3 « 最佳答案 删除 vertical-align: middle 后我觉得不错。 .mandato
我有这个 psd 并试图将它转换为 html css。 但是我无法从psd中计算出css中的行高。 如何根据前导+字体大小计算行高? 谢谢 最佳答案 如果行距不是自动的:LineHeight = fo
有谁知道如何更改文本字段上的行高(行距),最好是在 Interface Builder 中? 我已经找了大约一个小时了,但没有找到。 最佳答案 解决方法如下: Resizing NSTextField
是否可以在 C# 中的单元格元素(行)之间添加空格?我正在 Visual Studio 2012 中创建 pdf,并希望在行之间设置一些空间。我有这样的东西: PdfPTable cellTable
是否可以在 C# 中的单元格(行)元素之间添加空格?我正在 visual studio 2012 中创建一个 pdf,并希望在行之间设置一些空间。我有这样的东西: PdfPTable cellTabl
type ApplyFunc func(commitIndex uint64, cmd []byte) []byte 对于这个声明。我的理解是,这是一个函数指针。它的名字是 ApplyFunc。并且此
我很好奇多列索引的前导列的概念。 我正在使用这个示例 dvdrental分贝。 这是查询: SELECT title, length, rating, replacement_cost
我想将一个 double 格式格式化为最大长度为7的字符串,其中包含一个点“.”以及其后一位数字。 例如: 123.4 becomes "00123.4" 12345 becomes "12345
我需要正则表达式的帮助来从字符串中去除不需要的字符(在 Java 中)。我用 4 个正则表达式解决了这个问题。替换将被多次调用 [peeks: 50+ times/sec] 它并降低性能。但我认为它肯
只是将两个值连接到 mysql 表中的一列。 mysql 表中的第一个值和 PHP 常量中的第二个值保存为 define('ACCOUNTCODESUFFIX','016');。 MySql 查询有点
我如何按此顺序返回这些: 1: aaaa 2: bbbb 3: the cccc 4: dddd 所以忽略开头的“the” 目前我正在使用。 select * from houses order by
我通常使用以下代码将 PHP 变量导入 JavaScript: echo("var zipCode = " . $zipCode . ";"); 这工作正常,但对于以 0 开头的邮政编码,它会被 ch
有什么方法可以用前导 0 和小数来格式化 NSNumber 吗?例如,我需要有能力写 4.5 和 000。目前我有它允许小数,但不允许前导 0。 NSNumberFormatter *f = [[NS
你好我正在以编程方式创建标签栏,在我的功能中需要选择填充自定义颜色的标签,到目前为止我已经使用下面的代码实现了这一点,下面的输出见截图。 tabBarController.tabBar.selecti
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Integer with leading zeroes 有人能告诉我这是怎么回事吗?当我用前导零初始化一个
在 Xcode 6 中,我可以使用编辑器菜单来固定: 引领空间至超视 到 Superview 的尾随空间 顶部空间到Superview Superview的底部空间 我找不到在 Xcode 7 bet
我是一名优秀的程序员,十分优秀!