web-dev-qa-db-ja.com

単純なXMLを使用してビューをフィードできますか?

ビューの機能を使用して、グリッドレスポンステーブルのみを表す単純なxmlからのデータを処理したい

<list>
  <listpos id="12312">
    <foo>attr1</foo>
    <bar>attr bar</bar>
    ...
  </listpos>
  <listpos id="124412">
    <foo>attr 2</foo>
    <bar>attr barxy</bar>
    ...
  </listpos>
  ...
  ...
</list>

したがって、主なタスクは、そのテーブルをソート可能に表示し、一部の列を除外し、フィルタリングして検索することです。

これはビューで可能ですか?それは私が推測するプラグインによって処理されますか?または、プラグインは出力専用ですか? (私はjsonを知っています、atom etcプラグイン/モジュール。)

また、フィードモジュールとxml/xpathパーサーを試して、ビューに表示できるようにインポーターにノードを作成させました。しかし、ユーザーのログアウト後はとにかくそれらを削除する必要があります。これは、それが機密データであり、Webサーバーに保持してはならないためです。

そして、このデータを他のソースと結合すること、つまりノードテーブルと結合することについてはどうでしょうか?

5
groovehunter

このためのモジュールがあります: XML Views

2
Daniel Wehner

これを行う最善の方法は

  1. XMLからデータを抽出する単純なXMLライブラリを使用してモジュールを作成する
  2. そのデータをノードに保存する
  3. ビューを使用してそのデータを表示する

このアプローチを使用する利点

  1. 訪問者のために何度も何度もXMLを読み取るオーバーヘッドがありません
  2. XML構造が変更された場合、ビューに空やエラーが発生しないと言います

私の経験では、XMLを毎回解析することは非常にコストがかかります。

ただし、xmlデータは機密情報であり、毎回サーバーから消去する必要があるため、ケースは異なります。ユーザーはログアウトします。

したがって、ノードを作成して削除することは、それほど賢明な手順ではありません。

最善の方法は、単純なxmlライブラリを使用してカスタムモジュールを作成し、ビューをまったく使用しないことです。そのデータを一時テーブルに保存し、カスタムモジュールまたはカスタムSQLクエリを使用して表示した後、ユーザーがログアウトするときにユーザーフックを使用してテーブルとxmlを削除します。

2
Nikhil

それは完全に真実ではありません。ビューは、SQLに依存しないハンドラーを使用できます。 http://drupalmodules.com/module/entityfieldquery-views-backend は、そのようなことを行うと主張するモジュールの例です。他にもあると思います。 http://developmentseed.org/blog/2009/feb/05/extendr-flickr-and-views も同様の興味深いケーススタディです。

そうは言っても、それはおそらく簡単な作業ではありません。

1
user112

ビューからXMLデータにアクセスする場合は、XMLデータをデータベースに保存する必要があります。ビューが実際に行うことは、SQLを作成し、データを出力するためのいくつかの異なるテーマ関数を提供することです。

これに役立ついくつかのモジュールがあります。カスタムデータがあるため、おそらく data モジュールが最適です。これにより、データがカスタムテーブルに保持されます。

Cronジョブを作成して、x時間/日より古いエントリを削除して、データを永続的に保存しないようにすることができます。この方法は少しすっきりしていて、私が考えることができる最良のオプションです。

0
googletorp