我一直在閱讀教程後的教程,但似乎沒有爲我工作。目標是獲取包含元素和屬性的XML文檔並將數據插入到數據庫中。每個元素/屬性將成爲數據庫中的一列,每個條目都是一行。這裏是我一直在努力與虛構的XML文檔:將XML文檔導入到Rails數據庫中?
<?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是完全可選的,如果這是我的問題的一部分,請儘量讓我們擺脫它...)
最終目標有點複雜。具有多本書的多個圖書館。數據庫之間存在關係,所以我可以從Book數據庫中引用Library數據庫,反之亦然。我完全迷失了,絕對是一名菜鳥,但我有一個很好的計算機知識,並願意測試和嘗試。
我正在使用Rails 3.2.6與默認的SQLite3數據庫(3.6.20)。我已經安裝了REXML,ROXML,LibXML等,並通過API和演練閱讀,但事情並沒有解決。使用Book對象(具有.title,.author,.isbn和.description方法)必須有一種簡單的方法將XML文檔轉換爲Library對象(使用.name方法)。
任何幫助是真正apprecaited!
更新!
好的,接下來的問題。我一直在與這背後的邏輯鬼混,並想知道做下面的最佳方法...
假設我有這個新的和改進的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>
所以現在我們有兩個庫,第一個標題爲「喜愛的書」,並具有2本書,第二題爲「電子書」,並有一本書。
什麼是每本書知道它屬於哪個庫的最佳方式?最初,我創建了一個庫數據庫和一個圖書數據庫。每個Book對象都有一個library_id字段,它引用了正確的Library。因此,每個數據庫都可以使用「@ library.books.each do | b | b.title」等語法正確填寫。然而,這隻有當我有一個圖書館時纔有用。
我嘗試嵌套Book循環,你給了我一個類似的庫循環,但.css方法找到每一個匹配,無論它駐留在哪裏。 .css方法是否找到一個特定的點?
要更改,我希望能夠將每本書導入到其各自的庫中。我無法將任何字段添加到XML文件。
再次感謝。
我也玩過Nokogiri,沒有用,但我不相信我用過這個確切的語法。我會給它一個鏡頭並報告回去...... – 2012-07-07 19:22:50
好的,這不是給我一個錯誤,所以我想我們是在正確的軌道上。它雖然沒有做任何事情?我在軌道控制檯中輸入了這個信息,當我輸入'end'時,它只報告'0'。 doc.root也返回'零',所以我在想事情沒有按計劃進行...... 有沒有想法? – 2012-07-09 15:54:30
@XMLSlayer查看更新 – Mike 2012-07-09 22:24:49