Ruby on rails 非法字符'&';原始字符串中的REXML解析
您好,我正在尝试使用REXML解析XML文件。。。。当我的XML文件中存在非法字符时,它的JU将在此时失败 那么我们有没有办法替换或删除这些字符呢 无法分析,错误为原始字符串REXML分析中的非法字符“&”Ruby on rails 非法字符'&';原始字符串中的REXML解析,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,rexml,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,Rexml,您好,我正在尝试使用REXML解析XML文件。。。。当我的XML文件中存在非法字符时,它的JU将在此时失败 那么我们有没有办法替换或删除这些字符呢 无法分析,错误为原始字符串REXML分析中的非法字符“&” <head> Negative test for underlying BJSPRICEENG N4&N5 </head> doc = REXML::Document.new(File.open(file_name,"r:iso-8859-1:utf-8"
<head> Negative test for underlying BJSPRICEENG N4&N5
</head>
doc = REXML::Document.new(File.open(file_name,"r:iso-8859-1:utf-8"))
testfile.elements["head"].text
doc = REXML::Document.new(content)
dir_path = doc.elements["TestBed/TestDir"].attributes["path"].to_s
doc.elements.each("TestBed/TestDir") do |directory|
directory.elements.each("file") do |testfile|
t= testfile.elements["head"].text
end
end
end
<file name="toptstocksensbybjs.m">
<MCheck></MCheck>
<TestExtension></TestExtension>
<TestType></TestType>
<fcn name="lvlTwoDocExample" linenumber="20">
<head> P1><&
</head>
</fcn>
</file>
基础BJSPRICEENG N4和N5的阴性测试
doc=REXML::Document.new(File.open(文件名,“r:iso-8859-1:utf-8”))
testfile.elements[“head”].text
doc=REXML::Document.new(内容)
目录路径=文档元素[“测试床/TestDir”]。属性[“路径”]。到
doc.elements.each(“TestBed/TestDir”)do |目录|
directory.elements.each(“文件”)do | testfile|
t=testfile.elements[“head”].text
结束
结束
结束
P1>对于您的情况,要删除非法的&
字符,您可以尝试:
content = File.open(file_name,"r:iso-8859-1:utf-8").read
content.gsub!(/&(?!(?:amp|lt|gt|quot|apos);)/, '&')
doc = REXML::Document.new(content)
但是,对于那些其他非法字符,尤其是那些未配对的
,'
或“
,这将困难得多。@samuil只有这5种XML格式,而不是HTML格式。@ArieShaw您能准确地解释一下这里发生了什么。。。。。只需将&替换为&。。。。。。以及如何处理字符串中的其他字符?@Vinay正则表达式仅检测非法的&
字符。如果&
后跟amp
(&)、lt;
()、quot
(”)或apos,则该&
是合法的代码>(')。在这里,负前瞻(?!模式)
将过滤掉那些有效的&
(a&
,后面不跟amp;或lt;或…)。请注意,(负)前瞻组是一个零长度预测,它不会使用字符。@Vinay很难或可能无法检测非法的
、'
或“
。然而,在某些特殊情况下,这可能是可能的。@ArieShaw非常感谢您的解释:)。。。。但是,我的意思是,在这一步去掉head标记时,是否可能在这一步替换>或<………testfile.elements[“head”].text。。。。。可能正在使用REXML::Text.new(字符串、false、nil、false)?