• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XML::LibXMLのfindnodes()で、ワイルドカードを使いたい)

XML::LibXMLのfindnodes()でワイルドカードを使った要素抜き出し方法を教えてください

このQ&Aのポイント
  • XML::LibXMLでXPathを使用してワイルドカードを指定して要素を抜き出したい場合、以下の方法があります。
  • 具体的な例として、XMLのid属性にワイルドカードを使用して、idが「1-」で始まる要素を抜き出す方法を説明します。
  • まず、XML::LibXMLでパーサーを作成し、parse_file()メソッドを使用してXMLを解析します。そして、XPathでワイルドカードを使用して要素を指定し、findnodes()メソッドを使用して要素を抜き出すことができます。

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

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

LibXMLを使っていないので間違っていたらすみません。 XPathでは、 ~の文字列で始まるというのは、 starts-with( ) 関数を使います id が '1-' で始めるノードは //TestText[starts-with(@id,'1-')] のように指定できます。 あと、蛇足ですが、 XML は予約語なので、XMLを要素名として使うことは規約違反です。

mhiro_december
質問者

お礼

ありがとうございます。 参考になりました。 ただ、XPath自体に変更を加えずに //Test/TestText[@id="1-*"]/text() を何とか処理したいのです。 XPath文が既にあり、それを使ってXMLを読みたい のです。 やはり、XML::LibXMLでは無理でしょうか、、、

その他の回答 (1)

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

>XPath自体に変更を加えずに XPath自体には、正規表現は使えなかったと思います。 いったんセレクトしたノードリストをPerl のgrep で処理することはできると思いますけど。

mhiro_december
質問者

お礼

なるほど。ありがとうございます。 解決はしていませんが、この方法では行き詰るという ことが分かりました。

関連するQ&A