• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XML::XPathで日本語検索するには)

XML::XPathで日本語検索する方法と正規表現の利用について

このQ&Aのポイント
  • XML::XPathを用いた日本語検索とは具体的にはどのような処理を行いたいのか?修正方法はあるのか?その他の注意点
  • XML::XPathで日本語検索する際に表示されるエラーメッセージの解釈とは?エラーの原因は何か?
  • XML::XPath::find()メソッドで正規表現を使うことは可能なのか?使えない場合は代替方法はあるのか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

質問文で書かれている対処法は、要素名に関するモノです。 ウチでは、それは適用していませんが、 $xml->find('/list/item[text()="りんご"]'); 自体はうまくマッチングできました。 おそらくPerlスクリプト自体のコードが違うのではないかと思います。 スクリプトの先頭に use encoding 'UTF-8', STDOUT => 'shiftjis'; のように書いて スクリプト自体をUTF-8で保存すると良いと思います。 そうでない場合には、おそらく"りんご"の部分をEncodeで変換する必要があると思います。 >Invalid query somewhere around here (I think) のエラーは、やはり要素名に日本語を使っているとでるようです。 >XML::XPath::find()で正規表現を使うことはできないのでしょうか XML::XPath::findについて詳しくは知らないですが、 規格的には(つまり機能拡張されていないのであれば)いわゆるPerlで扱うような正規表現は使用できません。

dany
質問者

お礼

ありがとうございます! use encoding 'UTF-8', STDOUT => 'shiftjis'; を指定することで上手くいきました!! Perl 5.8から追加された機能なんですね。 わざわざJcodeを仲介する必要もなくなり、 コードもスッキリさせることができました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

対処法の適用をしてみると、 日本語タグのXPath指定によるマッチは、うまく行きました

関連するQ&A