2012-03-03 17 views
0

我經常遇到這樣的事情。此時我有一個包含許多線像這樣精靈表文件:用自定義工具或腳本解析和修改xml文件

<textureregion id="2" src="blue_ship1.png" x="778" y="791" width="64" height="65" rotated="false" trimmed="false" srcx="0" srcy="0" srcwidth="64" srcheight="65"/> 

現在我需要通過例如100遞增每個textureregion的id,然後寫在同一個XML到另一個文件或覆蓋現有的。我將不得不一次又一次地這樣做,所以我需要自動化它。我可以想到無數的方法來解決這個問題。但我也想學習一些新的東西,這裏有:

你將如何完成這樣的任務?寫一個自定義工具?腳本?你會用什麼語言,圖書館或工具?你可以將這個排序的線或工作量最少?

回答

1

您可以使用xmlstarlet來編輯xml文件。
例如:id ==> id+100

$ xmlstarlet edit --update '/textureregion/@id' -x '.+100' input.xml 
<?xml version="1.0"?> 
<textureregion id="102" src="blue_ship1.png" x="778" y="791" width="64" height="65" rotated="false" trimmed="false" srcx="0" srcy="0" srcwidth="64" srcheight="65"/> 

您可以添加--inplace選項來編輯文件就地。

+0

這工作很好! – vertti 2012-03-04 06:33:29

1

我會使用XSL轉換;有幾個命令行處理器可以爲你處理數據和樣式表。

XSLT是一種功能強大的語言,您幾乎可以將XML(V1樣式表)轉換爲XML,HTML或純文本。因此,對於簡單任務(如增加一個ID)而言,它可能不是「最少量的線路」,但您幾乎可以做任何所需的轉換。