2009年7月 5日

[ruby-list:46164] libxml で検証結果を取り出すには

5.5 です。

libxml-ruby を使って XML 文書の検証結果を Logger オブジェクトに
記録しようとしたのですが,やり方が分かりませんでした。

まず,以下のスクリプトで,エラーメッセージがどのように出力される
か確かめます。

----
require 'rubygems'
gem 'libxml-ruby'
require 'libxml'

doc=LibXML::XML::Document.string "<root><foo /></root>"
dtd=LibXML::XML::Dtd.new "<!ELEMENT root (#PCDATA)>"

$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@xxxxx


投稿者 xml-rpc : 2009年7月 5日 21:57
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86447
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。