From: "5.5" <5.5@...> Date: 2009-07-05T21:57:14+09:00 Subject: [ruby-list:46164] libxml で検証結果を取り出すには 5.5 です。 libxml-ruby を使って XML 文書の検証結果を Logger オブジェクトに 記録しようとしたのですが,やり方が分かりませんでした。 まず,以下のスクリプトで,エラーメッセージがどのように出力される か確かめます。 ---- require 'rubygems' gem 'libxml-ruby' require 'libxml' doc=LibXML::XML::Document.string "" dtd=LibXML::XML::Dtd.new "" $stderr=open("stderr.txt", "w") foo=open("foo.txt", "w") begin doc.validate dtd rescue foo.puts $! end ---- コンソールには,期待どおり以下の二つのエラーが表示されました。 Error: Element root was declared #PCDATA but contains non text nodes at :1. Error: No declaration for element foo at :1. 標準出力ではなくて標準エラー出力に書き出されました。 stderr.txt には何も書き出されません。 ということは,LibXML::XML::Document#validate メソッドは $stderr を 参照してないということですよね。 foo.txt には, Error: No declaration for element foo at :1. のみが書き出されます。 これでは検証結果を文字列として取得することができなさそうなのですが, どうすればよいでしょうか? -- 5.5@moji.gr.jp