- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XML::LibXMLのfindnodes()で、ワイルドカードを使いたい)
XML::LibXMLのfindnodes()でワイルドカードを使った要素抜き出し方法を教えてください
このQ&Aのポイント
- XML::LibXMLでXPathを使用してワイルドカードを指定して要素を抜き出したい場合、以下の方法があります。
- 具体的な例として、XMLのid属性にワイルドカードを使用して、idが「1-」で始まる要素を抜き出す方法を説明します。
- まず、XML::LibXMLでパーサーを作成し、parse_file()メソッドを使用してXMLを解析します。そして、XPathでワイルドカードを使用して要素を指定し、findnodes()メソッドを使用して要素を抜き出すことができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
LibXMLを使っていないので間違っていたらすみません。 XPathでは、 ~の文字列で始まるというのは、 starts-with( ) 関数を使います id が '1-' で始めるノードは //TestText[starts-with(@id,'1-')] のように指定できます。 あと、蛇足ですが、 XML は予約語なので、XMLを要素名として使うことは規約違反です。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
>XPath自体に変更を加えずに XPath自体には、正規表現は使えなかったと思います。 いったんセレクトしたノードリストをPerl のgrep で処理することはできると思いますけど。
質問者
お礼
なるほど。ありがとうございます。 解決はしていませんが、この方法では行き詰るという ことが分かりました。
お礼
ありがとうございます。 参考になりました。 ただ、XPath自体に変更を加えずに //Test/TestText[@id="1-*"]/text() を何とか処理したいのです。 XPath文が既にあり、それを使ってXMLを読みたい のです。 やはり、XML::LibXMLでは無理でしょうか、、、