2013-06-25 24 views
1

我有這樣的自定義標籤結構:填充自定義XML結構從MySQL錶行到弓

<warehouse> 

    <frontbay> 

    </frontbay> 

    <bayrow> 

     <bay> 

     </bay> 

     <bay> 

     </bay> 

     <bay> 

     </bay> 

     <bay> 

     </bay> 

     <bay> 

     </bay> 

     <bay> 

     </bay> 

    </bayrow> 

    <aisle> 

    </aisle>  

    <bayrow> 

      ...more bays... 

    </bayrow> 

    <aisle> 

    </aisle> 

    </warehouse> 

什麼是使<bay> S中<bayrow> S的內部的一個列表的最好方式,從第一個開始,並捕捉所有到最後一個,從一個MySQL數據庫傳遞數據?

  • 海灣及其對應的MySQL表上的行,將總是保持不變。
  • 本質上它應該直接與我的主要自動遞增灣相連。因此,元素中的第1列是「BayNumber」列的第一行。
  • 如果在以後的日子,我想讓BayNumber:1從一個不同的元素開始 - 不一定是結構中的第一個元素,哪種方法最好?

在考慮對上述以及對速度的目的,這將是最好的:

  1. 給每個機架自己的ID

  2. 寫代碼直接在每個托架內指向它在MySQL表上的位置?

  3. 編寫一個腳本來編譯托架列表,並將錶行逐個傳遞給列表中的每個元素?

    • 如果一個腳本,你會推薦使用JS或PHP來獲取列表? (我是新來的PHP,但我知道一些JavaScript &的jQuery)

我能完全缺少一個更好的方法來做到這一點,比如到MySQL表放置一個參考要素或類似的東西,所以請告訴我最佳行動方案從MySQL表中逐行添加自定義XML結構

+0

你的目標不明確。如果數據庫中的數據發生變化,只是重新生成XML數據,或者我錯過了什麼? – RandomSeed

+0

@YaK XML是一個靜態模板,它不依賴於MySQL中的內容,這些托架始終位於相同的位置,但它們並不總是有任何內容,所以每次都沒有動態生成XML的意義,在那兒? – Dom

+0

我想你會花費更多(CPU)的時間加載XML文件,找到一個'',插入數據,如果你只是生成整個文件。即使沒有,浪費的時間也是微不足道的。真的,你應該重建整個文件。如果XML文件的其他不可變部分相對較大,則只需重建整個「」部分。但不要打擾「移動」標籤。恕我直言,這是不值得的,除非最終的XML文件是*巨大*(幾兆字節),並且只有很小一部分是可變的。 – RandomSeed

回答

1

您可能會反覆迴避這個問題。使用2500個標籤生成XML文件不應該花費那麼長時間,除非它們的內容真的很大。

我會嘗試使用天真的方法拳頭:生成每個請求上的整個文件,並留意服務器負載。也許緩存結果並在數據庫更改時清除緩存。

但如果你真的想要走這條路,我肯定會的id屬性添加到每個<bay>標籤,符合bay實體在數據庫中的主鍵。