2012-06-06 99 views
2

我有一個XML文件,我必須把它轉換成一個屬性列表文件(plist中)。我嘗試了終端的「plutil」命令,但運行不正常。我該如何轉換? 非常感謝XML轉換到PList

+0

什麼樣的XML文件? – Robert

+0

你只需要一個工具在mac中使用? –

+0

是的工具,謝謝 – Vins

回答

4

我在Excel中編寫公式爲您創造plist文件的文本來實現這一點。它很容易。

1)(可選)在XCode中,創建一個最終具有所需格式的plist。保存,然後在finder中找到這個。在textWrangler或文本編輯器中打開它,以便您可以看到plist中每個元素的標籤。

例如,你應該找到類似:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 

<dict> 

    <key>First Key Name</key> 
    <array> 
     <string>Before God we are all equally wise</string> 
     <string></string> 
     <string>Albert Einstein</string> 
     <integer>0</integer> 
    </array> 

    <key>Second Key Name</key> 
    <array> 
     <string>Do not worry about your troubles.</string> 
     <string></string> 
     <string>Albert Einstein</string> 
     <integer>0</integer> 
    </array> 

</dict> 
</plist> 

2)我會假設: - 您的電子表格代表相同的4個屬性的多行/對象/水平 的描述 - 你將每個數組作爲電子表格中的單獨一行 - 以相同順序爲每行描述相同的屬性。 - 您將能夠通過知道它們存儲在哪個索引來訪問數組中的項目。即,我會通過在索引中查找第二陣列中獲得第二作者2.

您的電子表格應該是這個樣子:

  A    B   C    D    E   F 

    /--(Key Names)--\/-------------------(Properties of Each)-----------------\ 

1 Level Name  | Quote  | Notes | Author  | Favorited | 
    ____________________________________________________________________________ 
2 First Key Name | Before God... |   | Albert Einstein |  0  | 
3 Second Key Name | Do not wor... |   | Albert Einstein |  0  | 
. 
. 
. 

所以我的每一個對象都將獲得自己的鑰匙在我的字典每個對象由3個字符串和一個整數來描述。

3)式中

在我的電子表格的最後一欄的右邊,我會寫,生成該行的XML代碼的公式:

(F2) = CONCATENATE ("<key>",A2,"</key> <array> <string>",B2,"</string> <string>",C2,"</string> <string>",D2,"</string> <integer>",E2,"</integer> </array>") 

拖動較低將這個單元格的右下角放入所有其他行,它們將自動填充每行的信息。

同樣,在電子表格的底部,在所有的行,你可以用另一個公式來串聯行。假設你有300行:

(F4) = CONCATENATE (F2:F300) 

現在這個數據複製到一個文本文件,並添加過去幾年標籤和DOCTYPE信息,你可以從上面的複製。保存擴展名.plist,你很好去!將文件添加回您的xcode項目並像其他plist一樣加載。

+0

非常非常好! – Vins

+2

很高興我能幫到你。我花了很長時間尋找一個好的解決方案,所以我想我會分享我的結果! – bkbeachlabs

+1

我使用了bkbeachlabs所描述的Excel方法。工作很棒!我正在使用Excel 2011 for Mac和CONCATENATE公式,我不得不將字段之間的分隔符從逗號(,)更改爲分號(;)。所以當有人在Excel 2011中試用時,請使用:-) –