Ein XML-Dokument in eine Rails-Datenbank importieren?

Ich habe Tutorial für Tutorial durchgelesen, aber nichts scheint für mich zu funktionieren. Ziel ist es, ein XML-Dokument mit Elementen und Attributen zu erstellen und die Daten in eine Datenbank einzufügen. Jedes Element / Attribut ist eine Spalte in der Datenbank, und jeder Eintrag ist eine Zeile. Hier ist das erfundene XML-Dokument, mit dem ich gearbeitet habe:

<?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>

Ich möchte also eine Tabelle mit 2 Einträgen haben, wobei jeder Eintrag eine ISBN, einen Titel, eine Beschreibung und einen Autor hat. Das sind die Grundlagen. (Ich nehme an, die CDATA ist komplett optional. Wenn das Teil meines Problems ist, lassen Sie uns es auf jeden Fall loswerden ...)

Endziel ist etwas komplizierter. Mehrere Bibliotheken mit mehreren Büchern. Datenbanken haben die Beziehung zwischen ihnen, so dass ich aus meiner Buchdatenbank auf die Bibliotheksdatenbank verweisen kann und umgekehrt. Ich bin völlig verloren, definitiv ein Anfänger, aber ich habe gute Computerkenntnisse und bin bereit, Dinge zu testen und auszuprobieren.

Ich verwende Rails 3.2.6 mit der Standard-SQLite3-Datenbank (3.6.20). Ich habe REXML, ROXML, LibXML usw. installiert und APIs und exemplarische Vorgehensweisen durchgelesen, aber die Dinge funktionieren einfach nicht. Es muss eine einfache Möglichkeit geben, das XML-Dokument mit Book-Objekten (mit den Methoden .title, .author, .isbn und .description) in ein Library-Objekt (mit der Methode .name) umzuwandeln.

Jede Hilfe wird sehr geschätzt!

Aktualisieren!

Okay, nächste Frage. Ich habe mit der Logik dahinter rumgespielt und wollte wissen, wie ich am besten Folgendes mache ...

Angenommen, ich habe 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>

Jetzt haben wir zwei Bibliotheken, die erste mit dem Titel "Lieblingsbücher" und zwei Bücher, die zweite mit dem Titel "Andere Bücher" und ein einziges Buch.

Wie kann jedes Buch am besten erkennen, zu welcher Bibliothek es gehört? Ursprünglich habe ich eine Bibliotheksdatenbank und eine Buchdatenbank erstellt. Jedes Book-Objekt hatte ein library_id-Feld, das auf die richtige Library verwies. Somit könnte jede Datenbank korrekt mit einer Syntax wie "@ library.books.each do | b | b.title" ausgefüllt werden. Dies funktionierte jedoch nur, wenn ich eine Bibliothek hatte.

Ich habe versucht, die Book-Schleife, die Sie mir gegeben haben, in eine ähnliche Library-Schleife einzuschachteln, aber die .css-Methode findet jede einzelne Übereinstimmung, unabhängig davon, wo sie sich befindet. Gibt es eine CSS-Methode, die BIS zu einem bestimmten Punkt führt?

Zum Umformulieren möchte ich in der Lage sein, jedes Buch in seine jeweilige Bibliothek zu importieren. Ich kann der XML-Datei keine Felder hinzufügen.

Danke noch einmal.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage