我想知道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