मुझे आश्चर्य है कि रूबी में is_xml?(string)
जैसे कोई फ़ंक्शन है या नहीं, यह निर्धारित करने के लिए कि कोई दिया गया स्ट्रिंग एक्सएमएल स्वरूपित है या नहीं।जांचें कि कोई स्ट्रिंग एक्सएमएल स्वरूपित है
उत्तर
Nokogiri के parse
अगर निर्धारित करने की कोशिश में एक सरल regex परीक्षण <html>
की तलाश का उपयोग करता है
string =~ /^s*<[^Hh>]*html/ # Probably html
कुछ इसी तरह, XML घोषणा की तलाश में एक प्रारंभिक बिंदु होगा:: डेटा पार्स किया जा सकता HTML या XML है
string = '<?xml version="1.0"?><foo><bar></bar></foo>'
string.strip[/\A<\?xml/]
=> "<?xml"
यदि यह nil
के अलावा कुछ भी लौटाता है तो स्ट्रिंग में एक्सएमएल घोषणा होती है। इसके लिए परीक्षण करना महत्वपूर्ण है क्योंकि एक खाली स्ट्रिंग अगले चरणों को मूर्ख बनाती है।
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 परीक्षण किया देखने के लिए अगर यह एक नियमित रूप से स्ट्रिंग बनाम सच एक्सएमएल के बीच का अंतर बता सकते हैं:
[2] (pry) main: 0> doc = Nokogiri::XML('foo').errors
[
[0] #<Nokogiri::XML::SyntaxError: Start tag expected, '<' not found>
]
तो, आप अपनी फ़ाइलों के माध्यम से लूप और एक्सएमएल और गैर में उन्हें सॉर्ट कर सकते हैं
require 'nokogiri'
[
'',
'foo',
'<xml></xml>'
].group_by{ |s| (s.strip > '') && Nokogiri::XML(s).errors.empty? }
=> {false=>["", "foo"], true=>["<xml></xml>"]}
एक चर के लिए group_by
का परिणाम असाइन करें, और आप एक हैश आप गैर एक्सएमएल (false
) या एक्सएमएल के लिए जाँच कर सकते हैं होगा (: आसानी से -XML)।
महान क्या करना है! विवरण वास्तव में सहायक हैं। – mCY
मैंने थोड़ा और कोड जोड़ा जो आपको उपयोगी लगेगा। –
वहाँ रूबी के स्ट्रिंग वर्ग या सक्रिय समर्थन की स्ट्रिंग एक्सटेंशन में ऐसी कोई समारोह है, लेकिन आप detect errors in XML को Nokogiri उपयोग कर सकते हैं:
begin
bad_doc = Nokogiri::XML(badly_formed) { |config| config.strict }
rescue Nokogiri::XML::SyntaxError => e
puts "caught exception: #{e}"
end
यह हमें बहुत कुछ नहीं बताता है: 'नोकोगिरी :: एक्सएमएल (' ') {| config | config.strict} => # <नोकोगिरी :: एक्सएमएल :: दस्तावेज़: 0x3fc9ba1c9a1c नाम = "दस्तावेज़"> '। एक खाली स्ट्रिंग एक्सएमएल नहीं है, न ही यह सही ढंग से या गलत रूप से स्वरूपित है। 'नोकोगिरी :: एक्सएमएल (' ')। त्रुटियां' आपको बताएंगी कि क्या त्रुटियां हैं, लेकिन अधिक स्पष्ट रूप से। –
@theTinMan दाएं, लिंक में .errors उपयोग का एक उदाहरण भी है। 'bad_doc.errors' – nurettin
आपके उत्तर के लिए धन्यवाद देता है। अब मुझे पता है कि ~ – mCY
- 1. जांचें कि कोई स्ट्रिंग एक यूआरएल है
- 2. जांचें कि स्ट्रिंग में कोई अन्य स्ट्रिंग नहीं है
- 3. एक्शनस्क्रिप्ट 3: जांचें कि स्ट्रिंग में कोई अन्य स्ट्रिंग है
- 4. जांचें कि कोई सूची है
- 5. जांचें कि स्ट्रिंग खाली है
- 6. जांचें कि क्या स्ट्रिंग
- 7. जांचें कि एक स्ट्रिंग
- 8. केएसएच जांचें कि स्ट्रिंग
- 9. जांचें कि स्ट्रिंग
- 10. जांचें कि स्ट्रिंग टैब
- 11. jQuery: जांचें कि स्ट्रिंग
- 12. जांचें कि स्ट्रिंग में
- 13. जांचें कि कोई स्ट्रिंग मान्य पूर्ण पथ पता प्रारूप
- 14. कैसे जांचें कि कोई std :: स्ट्रिंग सेट है या नहीं?
- 15. जांचें कि स्ट्रिंग सामग्री में कोई HTML है या नहीं?
- 16. जांचें कि कोई चर Twig
- 17. जांचें कि कोई ऑब्जेक्ट
- 18. जांचें कि स्ट्रिंग में सरणी
- 19. जांचें कि स्ट्रिंग जावास्क्रिप्ट RegExp
- 20. जांचें कि एक स्ट्रिंग जावास्क्रिप्ट
- 21. सीएक्सएफ में स्वरूपित एक्सएमएल आउटपुट?
- 22. SyntaxHighlighter एक्सएमएल पाठ स्वरूपित नहीं है
- 23. जांचें कि कोई फॉर्म इनपुट मौजूद है
- 24. जांचें कि कोई node.js मॉड्यूल उपलब्ध है
- 25. पायथन: जांचें कि कोई ऑब्जेक्ट अनुक्रम है
- 26. जावास्क्रिप्ट जांचें कि कोई चर विंडो है
- 27. जांचें कि कोई ऑब्जेक्ट शून्य है
- 28. जांचें कि कोई पोर्ट खुला है
- 29. जांचें कि कोई BSTR खाली है
- 30. जांचें कि कोई SQL तालिका मौजूद है
क्या आप एक्सएमएल और सही ढंग से एचटीएमएल के बीच अंतर करना चाहते हैं? –
हाय टिन मैन, जवाब नहीं है। मेरे पास कुछ आम तार हैं और एक्सएमएल स्वरूपित तार एक साथ मिश्रित हैं। मैं उन्हें विभाजित करना चाहता हूं। – mCY