2011-01-24 65 views
2

對於一個項目我的工作,我需要一個XML文檔轉換爲JSON,但保持它的人類可讀的通過保持良好的對齊數據。雖然xml2json-xslt能夠創建JSON,但它的格式不是很好。
我的主要問題是它需要在XSLT 1.0中完成,而無需使用任何外部庫,JavaScript或其他任何東西。只是純粹的XSLT。雖然互聯網上有很多樣本,但我找不到能確保正確(可讀,可讀)格式的樣本。
它不需要通過轉換布爾值,數字,日期等來實現火箭科學。它只需要創建JSON,它將被另一個應用程序使用,但是當操作員查看數據時,他們需要縮進並很好地對齊的括號。轉換XML格式化的JSON

+1

Alex:你寫了*「它不需要做火箭 - 科學「*,是的,但JSON不映射XML。這就是爲什麼這個翻譯有幾個約定。我認爲你應該選擇其中之一。另外,「不錯的格式」並不清楚你的意思,以及這是一個有意義的問題。 – 2011-01-24 16:04:08

+0

「不錯的格式」僅僅意味着人們可以閱讀它,因爲事物以適當的方式對齊。 XML節點可能會變得很深,從而導致JSON對象也變得很深。簡單,正確的縮進應該已經足夠了。 – 2011-01-26 14:08:04

回答

2

最簡單的解決方案可能是通過JSON格式,其中似乎有許多可用的推xml2json.xslt的輸出 - 我沒有任何他們的經驗。

+0

如果這樣的JSON格式化程序會作爲XSLT存在,或者我可以從XSLT調用它,那麼問題就解決了。但是這樣的格式化器還不存在。 – 2011-01-26 14:12:24

0

http://james.newtonking.com/pages/json-net.aspx

我只用這個庫的LINQ to JSON,它是超潔淨和方便。我讀的文檔中一些有關JSON轉換到.NET的飛行物體,我記得在那裏看到了類JSON爲XML ...檢查出來

+0

通過超級乾淨/容易我的意思是從一個JSON字符串使用LINQ到JSON從一行代碼中獲取一個鍵值 – 2011-01-25 18:39:09

+0

不是我在尋找的。我需要一個純粹的XSLT解決方案,因爲我可以調整的是一個XSLT文件。我絕對不能使用.NET代碼。 – 2011-01-26 14:11:22

1

萬一別人得到了相同的特殊要求(從生產縮進JSON「簡單」使用XSLT 1.0 XML),我創建了一個縮進版本的xml2json-xslt的要點是:https://gist.github.com/3977454

大家誰是細跟XSLT 2.0或誰已經「複雜」的XML,我建議一個不同的XSLT因爲xml2json,XSLT有一些缺點:它缺乏適當的屬性,裝卸,搬運的多個元素用相同的名稱等(在寫作時xml2json-XSLT的當前修訂版:31)。

在搜索「xml2json xslt」時(例如,可以在github上找到XSLT選項)。 https://github.com/bramstein/xsltjson)。缺點是它們中的大多數不支持縮進,但是這可以通過通過JSON格式器管道輸出來補償(參見例如,https://stackoverflow.com/a/5244011/490560