Importieren eines XML-Dokuments in eine Rails-Datenbank?

Ich habe das Lesen durch tutorial nach dem tutorial, aber nichts scheint zu funktionieren für mich. Das Ziel ist es, ein XML-Dokument durch Elemente und Attribute sowie einfügen der Daten in eine Datenbank. Jedes element/Attribut wird eine Spalte in der Datenbank, und jeder Eintrag ist eine Zeile. Hier ist die aus-XML-Dokument, das ich habe gearbeitet mit:

<?xml version="1.0"?>
<library>
  <NAME><![CDATA[Favorite Books]]></NAME>
  <book ISBN="11342343">
    <title>To Kill A Mockingbird</title>
    <description><![CDATA[Description#1]]></description>
    <author>Harper Lee</author>
  </book>
  <book ISBN="989894781234">
    <title>Catcher in the Rye</title>
    <description><![CDATA[This is an extremely intense description.]]></description>
    <author>J. D. Salinger</author>
  </book>
  <book ISBN="123456789">
    <title>Murphy's Gambit</title>
    <description><![CDATA[Daughter finds her dad!]]></description>
    <author>Syne Mitchell</author>
  </book>
</library>

So, ich möchte eine Tabelle mit 2 Einträgen, jeder Eintrag mit einer ISBN, Titel, Beschreibung und Autor. Das sind die Grundlagen. (Das CDATA ist vollkommen freiwillig, nehme ich an. Wenn es das ist Teil meines Problems, mit allen Mitteln lassen Sie uns loswerden...)

Ziel ist ein bisschen mehr kompliziert. Mehrere Bibliotheken mit mehreren Büchern. Datenbanken haben, die Beziehung zwischen Ihnen, so dass ich den Verweis auf die Bibliothek-Datenbank, aus meinem Buch-Datenbank, und Umgekehrt. Ich bin völlig verloren, auf jeden Fall ein rookie, aber ich habe gute PC-Kenntnisse und bin gerne bereit zum testen und ausprobieren.

Ich bin mit Rails 3.2.6 mit der Standard-SQLite3-Datenbank (3.6.20). Ich habe installiert REXML, ROXML, LibXML, etc. und Lesen Sie über APIs und walkthroughs, aber die Dinge einfach nicht funktionieren. Gibt es eine einfache Möglichkeit, drehen Sie das XML-Dokument in ein Library-Objekt (mit einem .name-Methode) mit Buch-Objekten (mit .Titel, .Autor, .isbn und .Beschreibung Methoden).

Jede Hilfe ist wirklich apprecaited!

Update!

Okay, nächste Frage. Ich habe herumalbern mit die Logik hinter diesem, und wollte wissen, der beste Weg, um Folgendes zu tun...

Nehme an, dass ich diese neue und verbesserte XML-Datei.

<?xml version="1.0"?>
<RandomTag>
  <library name='Favorite Books'>
    <book ISBN="11342343">
      <title>TKAM</title>
      <description>Desc1</description>
      <author>H Lee</author>
    </book>
    <book ISBN="989894781234">
      <title>Catcher in the Rye</title>
      <description>Desc2</description>
      <author>JD S</author>
    </book>
  </library>
  <library name='Other Books'>
    <book ISBN="123456789">
      <title>Murphy\'s Gambit</title>
      <description>Desc3</description>
      <author>Syne M</author>
    </book>
  </library>
</RandomTag>

So, jetzt haben wir zwei Bibliotheken, das erste mit dem Titel "Lieblings-Bücher" und 2 Bücher, das zweite mit dem Titel "Andere Bücher" und mit einem einzigen Buch.

Was ist der beste Weg für jedes Buch, um zu wissen, welche Bibliothek es gehört? Ursprünglich habe ich eine Bibliothek-Datenbank und Buch Datenbank. Jedes Buch, das Objekt hatte eine library_id Feld, das auf die richtige Bibliothek. Also, jede Datenbank richtig ausfüllen verwenden Sie eine syntax wie "@Bibliothek.Bücher.jeder |b| b.Titel". Dies allerdings nur funktionierte, wenn ich hatte eine Bibliothek.

Versuchte ich Schachtelung der Buch-Schleife, die Sie mir im inneren eine ähnliche Bibliothek Schleife, aber die .css-Methode findet jedes einzelne Spiel, egal wo es sich befindet. Ist es .css-Methode, die feststellt, BIS zu einem bestimmten Punkt?

Umformulieren, ich möchte in der Lage sein, zu importieren, jedes Buch in der jeweiligen Bibliothek. Ich kann nicht fügen Sie alle Felder der XML-Datei.

Nochmals vielen Dank.

InformationsquelleAutor XML Slayer | 2012-07-06
Schreibe einen Kommentar