web-dev-qa-db-ja.com

ネストされた要素を含むXMLを、「値の数」=「無制限」の設定でフィールドにインポートします

Noob to Drupal here。私は100個のxmlファイルを空のD7データベースにインポートしようとしています。各xmlファイルには他のxmlおよび画像ファイルへのリンクが含まれています。フィード、Xpathパーサー、および改ざんがあります。インストールされているモジュール。

Drupalコンテンツタイプ=記事フィールド(マシン名):

  • unique_xml_id(テキスト)
  • 本文(長いテキストと要約)->設定「値の数」=「無制限」
  • field_images(画像)設定 "値の数" = "無制限"

これがxmlです。すべてのxmlファイルには、pidとgidを組み合わせることによって一意のIDがあります。

<testContent pid="5" gid="000007">
  <textContent title="Title 1" ordinal="0">His car</textContent>
  <textContent title="Title 2" ordinal="1">Our car</textContent>
  <textContent title="Title 3" ordinal="2">
    This is my <textLink linkType="int" pid="5" gid="000014">car</textLink> -> link to xml
  </textContent>
  <visualHeader title="Images">
    <visualContent mid="1057" alt="Radiator" type ="thumb"> -> image url, ex: img/1057.jpg
      <visualLink pid="6" gid="001057"</visualLink> -> link to other xml file with parent img
    </visualContent>
    <visualContent mid="1092" alt="Wipers" type="thumb"> -> image url, ex: img/1092.jpg
      <visualLink pid="6" gid="001092"</visualLink> -> link to other xml file with parent img
    </visualContent>
  </visualHeader>
</testContent>

目的:

  1. XML属性 "pid"と "gid"の連結をフィールド "uniquexmlid"にマップし、この一意性をチェックします
  2. TextContent要素をbodyフィールドの値(配列?)にマップします。例:body [0] = "His car" body [1] = "Our car" body [2] = "This is my car"(car is other node to link)それはまだデータベースに存在しません)
  3. Body [2]フィールド内のパスエイリアスを使用して、「car」リンクを他のノードのURL(まだxmlファイルから作成されていない)にマップします。

これらをどのように達成しますか? Drupalでフィールドを設定する他の方法の提案を私は受け入れる。

2
MoeHac

また、htmlページからインポートする場合は、html xpathパーサーに設定する必要があります。

1