Импортировать документ XML в базу данных Rails?

Я читал урок после урока, но, похоже, у меня ничего не получалось. Цель состоит в том, чтобы взять документ XML с элементами и атрибутами и вставить данные в базу данных. Каждый элемент / атрибут будет столбцом в базе данных, а каждая запись - строкой. Вот составленный документ XML, с которым я работал:

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

Поэтому я хочу иметь таблицу с 2 записями, каждая из которых имеет ISBN, заголовок, описание и автора. Это основы. (Полагаю, что CDATA не является обязательным. Если это является частью моей проблемы, то, конечно, давайте избавимся от нее ...)

Конечная цель немного сложнее. Несколько библиотек с несколькими книгами. Базы данных имеют отношения между ними, поэтому я могу ссылаться на базу данных библиотеки из базы данных моей Книги, и наоборот. Я полностью потерян, определенно новичок, но у меня хорошие знания компьютера и я готов проверить и испытать что-то новое.

Я использую Rails 3.2.6 с базой данных SQLite3 по умолчанию (3.6.20). Я установил REXML, ROXML, LibXML и т. Д. И прочитал API-интерфейсы и пошаговые руководства, но ничего не получается. Должен быть простой способ превратить документ XML в объект библиотеки (с методом .name) с объектами Book (имеющими методы .title, .author, .isbn и .description).

Любая помощь действительно ценится!

Update!

Хорошо, следующий вопрос. Я дурачился с логикой, стоящей за этим, и хотел знать лучший способ сделать следующее ...

Предположим, у меня есть этот новый и улучшенный файл XML.

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

Итак, теперь у нас есть две библиотеки, первая из которых называется «Любимые книги». и имея две книги, вторая под названием «Другие книги»; и имея одну книгу.

Как лучше каждой книге узнать, к какой библиотеке она принадлежит? Первоначально я создал базу данных библиотеки и базу данных книг. Каждый объект Book имеет поле library_id, которое ссылается на правильную библиотеку. Таким образом, каждая база данных может корректно заполняться с использованием синтаксиса, подобного & quot; @ library.books.each do | b | b.title & Quot ;. Это, однако, работало только тогда, когда у меня была одна библиотека.

Я попытался вложить цикл Book, который вы мне дали, в похожий цикл Library, но метод .css находит каждое совпадение независимо от того, где оно находится. Есть ли метод .css, который находит до определенной точки?

Перефразируя, я хотел бы иметь возможность импортировать каждую книгу в соответствующую библиотеку. Я не могу добавить какие-либо поля в файл XML.

Еще раз спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос