2009-09-10 18 views
1

文本處理我有一個的.plist文件看起來像這樣:與程序,不是Perl的

<plist version="1.0"> 
<array> 
<dict> 
    <key>name</key> 
    <string>Alabama</string> 
    <key>abreviation</key> 
    <string>AL</string> 
    <key>date</key> 
    <string>1819</string> 
    <key>population</key> 
    <string>4,627,851</string> 
    <key>capital</key> 
    <string>Montgomery</string> 
    <key>largestCity</key> 
    <string>Birmingham</string> 
</dict> 
.... 
</array> 
</plist> 

我想更多的信息,plist中添加諸如座右銘和暱稱。他們在這種格式:

<nickname>Yellowhammer State</nickname> 
<nickname>The Last Frontier</nickname> 
<nickname>The Grand Canyon State</nickname> 
<nickname>The Natural State</nickname> 
<nickname>The Golden State</nickname> 
<nickname>The Centennial State</nickname> 
<nickname>The Constitution State</nickname> 
<nickname>The First State</nickname> 
<nickname>The Sunshine State</nickname> 

我正在考慮做一些搜索和替換以添加更多信息。我也可以編寫一個perl腳本來讀取暱稱並將它們添加到plist中。

但是,有沒有一個文本處理程序,將允許我遍歷值並將它們插入正確的位置?我一直在搜索文本處理器/編輯器,無法找到我在找什麼。

回答

1

這看起來像XSLT的工作:Mac或Linux上的xsltproc。 (或SAXON,它支持XSLT 2.0)

[您沒有提及第二個文件中的暱稱與第一個文件中的值匹配 :它們是否匹配? ]

+0

是的,它們是按順序排列的。我現在將看看XSLT。 – Bryan 2009-09-11 17:27:19

0

首先,我建議創建的plist 1.1對待你的名字值對像相關的實體,它們是,例如:

<key name="capital" value="Montgomery" /> 

<key>capital <value>Montgomery</value></key> 

這在我看來,有他們分開你的方式將使你想要做更多的未來處理。

除非要提示每次插入,否則需要靠近暱稱的更多元信息才能將關聯設置爲正確的狀態。使暱稱像

<nickname state="AL">Yellowhammer State</nickname> 

會給你所有你需要輕鬆地插入您的數據在任何語言的適當位置。

+0

這是格式允許在plists? http://www.cakoose.com/wiki/plist_xml_is_pointless如何使用可可來訪問您的值和屬性? – Bryan 2009-09-11 17:49:57

+1

對不起 - 我沒有看到plist標籤的意義。你明顯堅持已經爲plist定義的模式。我支持我的說法,即暱稱標籤需要一些東西來讓您將暱稱與正確的狀態關聯起來。 你可以使用任何你喜歡的語言插入。只要確保使用已經提供的xml工具 - 即不要編寫自己的xpath解析器,在perl中使用XML :: LibXML或XML :: Parser和XML :: XSLT。 – DaveParillo 2009-09-11 21:44:43