環境
- Ruby3
コード
Rubyを使用して特定の文字列が有効なXMLかどうかを確認するメソッドは以下
require 'nokogiri' def valid_xml?(string) doc = Nokogiri::XML(string) doc.errors.empty? end
もしXMLの構造に問題があれば、errorsメソッドはNokogiri::XML::SyntaxErrorの配列を返します。
また、Nokogiri::XML.parseメソッドを使っても同様のことができます。
このメソッドは、第一引数に文字列またはIOオブジェクトを受け取り、第三引数に文字コードを指定できます。例えば、以下のように書くことができます。
require 'nokogiri' def valid_xml?(string) doc = Nokogiri::XML.parse(string, nil, "UTF-8") doc.errors.empty? # エラーがなければtrueを返す end
このメソッドは、文字列がvalidなXMLであるかどうか(つまり、DTDやスキーマに従っているかどうか)は判定しません。
もしvalidityをチェックしたい場合は、Nokogiri::XML::SchemaやNokogiri::XML::RelaxNGなどのクラスを使ってください²。