XMLを読み込み、コンテンツを作成するには

Events happening in the community are now at Drupal community events on www.drupal.org.
starbucks.espresso.journey's picture

こんばんは。はじめて質問させていただきます。
Drupalを触り始めて半年ぐらい触ってます。

現在、以下のXMLをDrupalで定期的に読み込み、
更新があれば更新内容をメールで送信する機能を実現したいと思っています。

またXMLから読み込んだ情報は、Viewで検索することも後に実現したいため、
コンテンツタイプか何かを新規で作り、Drupalに溜めていきたいです。

http://nvd.nist.gov/download/nvdcve-recent.xml

以下のモジュールを使う想定で、
HTTP FetcherでURLを指定し、
XPath parserで欲しい情報を取得する流れを想定しています。

・Feeds
・Feeds HTTP Fetcher
・Feeds XPath parser
・Feeds News

そこで質問なのですが、
①XMLは子/子孫要素は存在しない場合や2件以上ある場合がありますが、
こういった場合フレキシブルにDrupal内に情報を溜めておく方法はありますか?

②XPath parserを使う想定ですが、そもそももっとスマートにすべてを取得できますでしょうか。
xpathをガリガリ書くのもつらいので...

以上、よろしくおねがいします。

Comments

hgoto's picture

はじめまして。ご参考になるかわかりませんが・・・

①XMLは子/子孫要素は存在しない場合や2件以上ある場合がありますが、
こういった場合フレキシブルにDrupal内に情報を溜めておく方法はありますか?

こちらは「 XML が階層的になっていて、子要素などもひとつのノードとして登録したい」という理解でよろしかったでしょうか?
ネガティブなお答えになりますが、コードを書かずにそのようなことを実現するのは少し難しいのではないかと思います。

ノードとして登録する前に各フィールドに対して前処理を行える「 Feeds Tamper 」というモジュールなどはありますが、想定されている処理を行えるようなモジュールは今のところ存在しないような、気がします。。

②XPath parserを使う想定ですが、そもそももっとスマートにすべてを取得できますでしょうか。
xpathをガリガリ書くのもつらいので...

こちら「もっとスマートに」というのはたとえばどのようなイメージでしょう?具体的なイメージをお出しいただけると他の方からのヒントが得られやすいかもしれません。

>こちらは「 XML

starbucks.espresso.journey's picture

>こちらは「 XML が階層的になっていて、子要素などもひとつのノードとして登録したい」という理解でよろしかったでしょうか?
はい、ご認識のとおりです。

>ネガティブなお答えになりますが、コードを書かずにそのようなことを実現するのは少し難しいのではないかと思います。
そうでしたか。私なりにモジュールを探してみたのですが、残念です。

>こちら「もっとスマートに」というのはたとえばどのようなイメージでしょう?具体的なイメージをお出しいただけると他の方からのヒントが得られやすいかもしれません。
XPath parserを使うとなると、親タグ子タグ、属性などもろもろをXPathを書く必要がある認識で、
XPathを書かずとも子タグはnode、属性はfieldといった感じで自動で読み込めたらなという思いでした。

分けてみてはいかがでしょうか

Tomotsugu Kaneko's picture

hgotoさんがおっしゃられるいるように、Drupal内でコードを書かずに処理するのは難しい気がします。
※条件処理としてRules Moduleは試す価値あるかもしれませんが。

なので、データの取得と処理については外部のサービスを利用するのはいかがでしょうか。
もし自分であれば、あらかじめデータを整形してDrupalにはインポートするだけにしたいように思います。
もしかしたら以下のサービスが役に立つかもしれません。

twitter: @snize

starbucks.espresso.journey's picture

なるほど、そうですね。
今回は諦めて、ロジックを書いてしまいました。
提示していただいたサービスも参考にしたいと思います。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: