我想知道Ruby中是否有像is_xml?(string)
这样的函数来识别给定的字符串是否是XML格式的。检查一个字符串是否是XML格式的
回答
引入nokogiri的parse
使用一个简单的正则表达式测试寻找<html>
,企图以确定是否要分析的数据是HTML或XML:
string =~ /^s*<[^Hh>]*html/ # Probably html
类似的东西,寻找XML声明将是一个起点:
string = '<?xml version="1.0"?><foo><bar></bar></foo>'
string.strip[/\A<\?xml/]
=> "<?xml"
如果返回的内容不是nil
,则该字符串包含XML声明。测试这一点很重要,因为空字符串会欺骗下一步。
Nokogiri::XML('').errors.empty?
=> true
引入nokogiri还具有errors
方法,这将在尝试解析的文档格式错误后返回错误的数组。测试任何大小将有所帮助:
Nokogiri::XML('<foo>').errors
=> [#<Nokogiri::XML::SyntaxError: Premature end of data in tag foo line 1>]
Nokogiri::XML('<foo>').errors.empty?
=> false
Nokogiri::XML(string).errors.empty?
=> true
如果文档在语法上有效,则会成立。
我只是测试引入nokogiri,看它是否能告诉一个普通字符串与真正的XML之间的区别:
[2] (pry) main: 0> doc = Nokogiri::XML('foo').errors
[
[0] #<Nokogiri::XML::SyntaxError: Start tag expected, '<' not found>
]
所以,你可以通过你的文件中环和其排序放入XML和非-xml容易:
require 'nokogiri'
[
'',
'foo',
'<xml></xml>'
].group_by{ |s| (s.strip > '') && Nokogiri::XML(s).errors.empty? }
=> {false=>["", "foo"], true=>["<xml></xml>"]}
指定的group_by
结果给一个变量,你就会有一个哈希,你可以检查非XML(false
)或XML(true
)。
太棒了!细节真的很有帮助。 – mCY
我加了一点你可能会觉得有用的代码。 –
有一个在Ruby的String类或Active支持的字符串扩展没有这样的功能,但可以使用引入nokogiri到detect errors in XML:
begin
bad_doc = Nokogiri::XML(badly_formed) { |config| config.strict }
rescue Nokogiri::XML::SyntaxError => e
puts "caught exception: #{e}"
end
- 1. 检查字符串是否是格式正确的xml
- 2. C#检查一个字符串是否是一个有效的WebProxy格式
- 3. 检查一个字符串是否有07.05.2013日期格式
- 4. 检查字符串是否属于xml
- 5. 检查一个字符串是否都是唯一的字符,空格除外
- 6. C - 检查字符串是否是另一个字符串的子字符串
- 7. 检查一个字符串是一个字符串模式
- 8. 如何检查是否字符串是有效的HTML格式
- 9. 检查一个字符串是否是一个有效的URI
- 10. 检查字符串是否有空格
- 11. 检查一个字符串是否只有字母+空格?
- 12. 检查一个字符串是否是JavaScript中的html字体
- 13. 正则表达式来检查一个字符串是否是一个数字
- 14. 函数检查字符串的第一个字符是否是一个字母
- 15. 检查一个NSString是否是一个html字符串?
- 16. 如何检查一个字符串是否是一个HashMap
- 17. 如何检查一个对象是否是一个字符串?
- 18. 检查一个字符串是否是一个日期
- 19. 检查一个字符串是否是其他两个给定的字符串
- 20. 爪哇 - 检查是否字符串在另一个字符串
- 21. Applescript:检查一个字符串是否包含空字符串?
- 22. 检查字符串是否以另一个字符串开头?
- 23. Python - 检查一个字符串是以“是”还是“否”开头?
- 24. 检查一个字符串是否是回文不是
- 25. 如何检查一个字符串是否是数字?
- 26. 如何检查一个字符串是否是纯字母?
- 27. 检查字符串的日期格式是否符合要求的格式
- 28. 正则表达式来检查字符串是否有效XML
- 29. 检查一个字符串是否是任何多个项目
- 30. 如何检查字符串是否是另一个字符串的回文
你想区分XML和正确形成的HTML吗? –
嗨田满,答案是否定的。我有一些常见的字符串和XML格式的字符串混合在一起。我想分裂他们。 – mCY