我一直在阅读一个又一个的教程,但似乎没有什么对我有用。目标是获取包含元素和属性的 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 文档转换为带有 Book 对象(具有 .title、.author、.isbn 和 .description 方法)的 Library 对象(具有 .name 方法)。
非常感谢任何帮助!
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 字段,它引用了正确的图书馆。因此,每个数据库都可以使用“@library.books.each do |b| b.title”之类的语法正确填写。然而,这只在我拥有一个图书馆时才有效。
我尝试将您给我的 Book 循环嵌套在类似的 Library 循环中,但 .css 方法会找到每个匹配项,无论它位于何处。是否有 .css 方法可以找到 UNTIL 特定点?
换句话说,我希望能够将每本书导入到各自的图书馆中。我无法向 XML 文件添加任何字段。
再次感谢。