DelphiのネイティブXMLコンポーネント「OpenXML」があります。
(しかしOpenXMLのページの背景色はものすごいな・・・目が痛い)
項目数の多いXMLでXPathが使いたかったのでインストールしてみましたが・・・うまく動きません。環境はWindows 7 + Delphi2009
とりあえずインストール
Alternative Document Object Model v.5.1.4 をパッケージとしてインストールし、Utility Library v.3.0.2 を追加でsourcesにつっこみます。
exsamplesに入っている「xpath example」を開きコンパイル。ここまでは順調。
しかし
UTF-8エンコードでごくシンプルなXMLでテスト。
<?xml version="1.0" encoding="UTF-8"?> <address> <item> <name>織田信長</name> <access kind="email"></access> <access kind="url">http://www.example.com/1</access> </item> <item> <name>豊臣秀吉</name> <access kind="email"></access> <access kind="url">http://www.example.com/2</access> </item> <item> <name>徳川家康</name> <access kind="email"></access> <access kind="url">http://www.example.com/3</access> </item> </address>
こんなのです。
そしてXPath「/address/item」を入力すると・・・
「プロジェクト xpath_example.exe は例外クラス EXPath_Err (メッセージ ‘XPath type error.’ )を送出しました。」
となってしまいます。
ほかにも「/address」とか「//item」などを入力するも同じ例外。
ヒントを得たものの
Teppi TechnologyさんのページでXPathについてハマリの症状が載っていました!
注意!!(めちゃくちゃハマル)
OpenXMLのXPath検索は、NameSpace(名前空間)が宣言されているドキュメントでなければ名前検索が正しく動かない。 名前空間なしのドキュメントでXPath検索が動くようにするには、TDomElement, TDomAttributeのコンストラクタに以下の変更を加える必要がある。:
おおっ!これだこれ!
ということで早速TDomElement、TDomAttributeのコンストラクタを変更。
しかし・・・
ダメだ・・・
ということでこのブログでは未解決でございます・・・(泣
どなたか解決された方がありましたら教えてください。