當前位置:編程學習大全網 - 編程語言 - 側欄編程

側欄編程

為Java開發人員提供YAML文件格式的高級介紹,找出它與XML和JSON的區別,並測試它的優缺點。

所有的動態語言(比如Ruby Groovy Python)和它們的相關框架(比如Ruby on rails)都在競爭。雖然大多數閱讀本文的Java開發人員每天都在與純Java打交道,並且在未來的許多年裏都將如此,但這並不意味著他們不能學習新知識,不能為自己的武器庫添加新武器。這篇文章介紹了YAML(YAML沒有。文件格式(由Ruby on rails框架解釋,因為它的所有配置文件都是YAML)以及它與XML和JSON的區別。最後,討論了YAML的優點和缺點。

空格縮進和JSON選項

YAML文件格式主要關註空格縮進的概念,用來表示數據的層次結構——而不是使用JSON的XML嵌套標簽或大括號({})和方括號([])。實際上它是JSON的超集,所以妳可能需要使用JSON風格的語法來跳出空間流。其創始人將其描述為為所有編程語言提供了人性化的數據序列化標準。以我的經驗,重點是人性化。這是壹個使用空格縮進的YAML示例。在創建YAML文件時,使用固定寬度的字體是不合適的,因為空格是至關重要的(參考側欄YAML和標簽)

JFrame:defaultCloseOperation:JFrame EXIT _ ON _ CLOSE標題:測試幀寬度:高度:組件:JTextArea:名稱:TextArea文本:|這是壹個跨多行的很長的文本(但保留了新行)它不需要用特殊的括號CDATA標記或類似的東西進行轉義

側欄YAML和標簽?在任何基於空格縮進的文件格式中,最常見的問題之壹是如何解釋標簽。在這個YAML的例子中,答案很簡單。它不支持標簽使用標簽字符縮進代替空格,這樣會導致異常處理。

您可以在任何節點使用JSON風格的語法或混合語法。例如,上面的例子可以改為。

JFrame:defaultCloseOperation:JFrame EXIT _ ON _ CLOSE title:Test Frame width:height:ponents:JTextArea:name:textArea text:|這是壹個跨多行的很長的文本(但保留了新行)它不需要用特殊的括號CDATA標記或類似的東西進行轉義。

在底層節點切換到JSON風格的語法特別有用(也就是說,它們沒有子節點,正如您所猜測的,在YAML,井號用於註釋)。

YAML結構組件

我們以前見過壹個簡單的YAML例子。讓我們來看看YAML、哈希表和塊字面量的結構。

哈希(哈希)

散列的創建是通過縮進子段並在關鍵字和值之間使用冒號(:)來實現的,例如

JFrame:defaultCloseOperation:JFrame EXIT _ ON _ CLOSE標題:測試幀寬度:高度:

另壹種方法是使用JSON兼容的花括號語法({})語法。每對關鍵字/值由逗號()分隔,例如

JFrame:{ defaultCloseOperation:JFrame EXIT _ ON _ CLOSE標題:測試幀

寬度:高度:}

列表(列表)

通過在每個列表元素前面加上減號()和空格縮進來創建列表,構成了YAML的基礎。

組件:JTextArea Jbutton

另壹種方法是使用JSON兼容的方括號([])語法,例如

組件:[JTextArea JButton]

塊文字(文本塊)

這是YAML的亮點,特別是與XML相比,它的CDATA相當粗糙。block literal可以小心地將大塊文本插入到文件中。您可以使用豎線(|)命令在文本中保留新行,例如

文本:|這是壹個跨多行的很長的文本(但保留新行),不需要用特殊的括號CDATA標簽或類似的東西進行轉義

YAML編譯器將從第壹行的第壹個文本字符開始編譯(並丟失所有縮進的空格),但會在文本中保留新的壹行。

此外,您還可以使用大於號(>告訴YAML編譯器將所有新行分隔開,並將輸入文本視為壹個長行。

正文:& gt這是壹個跨多行的很長的文本(但是保留新行),不需要用特殊的括號CDATA標簽或者類似的東西來轉義

除了這兩條指令之外,您還可以使用豎線和加號(|+)來分隔前面的空格,保留新行和末尾的空格,您還可以使用大於號和減號(> )來分隔所有空格。

YAML VS XML和JSON

從前面的例子中可以清楚地看到,YAML不像XML那樣冗長。YAML文件的大部分內容都是真實數據,沒有無窮無盡的開始和結束標簽。在XML中,這些標簽通常比它們描述的數據要大。YAML更適合需要手動維護的數據文件類型。

YAML不提供scheme或DTD概念,所以它無法驗證文件格式是否符合您的預期。XML的冗長也有它的價值,但壹般來說,由於XML的成熟,它有很多額外的工具來驗證其格式,但YAML沒有。

JSON也適用於任何數據。它主要旨在提高性能和文件大小,因為它幾乎不使用空格和結束標記。但是JSON文件的內容增加了復雜性,它的關閉logo就像下地獄壹樣。這是JavaFx代碼(基於JSON)中能看到的最痛苦的事情。在數據文件中使用UI結構使得結果更加復雜,其復雜程度幾乎讓文件無法理解。

查看JavaFx示例代碼(單擊Edit this page鏈接)。請特別註意它的結尾。

} } } } ] } } center: bookPanel }

混合使用{}結構和[]列表使得手工維護大型JSON風格的文件變得非常困難。YAML巧妙地解決了這個問題,利用其空間縮進的方法。當然,您可以隨時切換到JSON風格的語法(比如在底部節點)。

解析YAML文件最常用的Java庫是在其Ruby on Rails框架中導入和導出jvaml()JRuby(在Java VM上運行Ruby版本的動態語言)。使用JvYAML JvYAML提供了壹般文件處理的功能(在前面的例子中,它返回了標準Java字符串長映射和列表對象的嵌套架構)。例如,使用靜態dump()方法保存為文件,然後使用靜態load()方法加載。

YAML轉儲(對象數據寫入器輸出);對象數據= YAML負載(閱讀器io);

參考側邊欄中基於YAML的開源項目,了解基於YAML的開源項目以及如何在Java中加載解釋性UI。

基於YAML的側邊欄開源項目?請原諒我在這裏無恥地介紹我們自己的開源項目。當我真的不知道其他基於YAML的開源項目,除了JRuby,JRuby的Ruby on Rails框架的實現很大程度上依賴於YAML,而不是XML或者JSON。看看我的Java Builder庫()。通過使用YAML文件將描述UI加載到Java中,它提供了壹種定義屏幕控制布局事件行和數據綁定的方法。

事實上,YAML文件真的很簡單,甚至妳可以使用任何文本編輯器來維護它,但壹些特殊的文本編輯器提供語法高亮功能,這是非常有助於維護。對於Eclipse,有Eclipse YAML編輯器(),對於NetBeans,可以使用Ruby包中的YAML編輯器(),但是在NetBea中,ns中的YAML編輯器是沒有用的。它只支持YAML的壹小部分(例如,它不支持block literal)。我希望NetBeans中的YAML編輯器已經解決了這個問題。

我還沒有機會測試IntelliJ IDEA,但我猜它的Ruby on Rails插件(+IDEA+Ruby+Plugin)附帶了壹個YAML編輯器。

添加YAML工具

Lishi Xinzhi/Article/program/Java/JSP/201311/19416

  • 上一篇:怎麽學習3D max人物建模
  • 下一篇:貴陽壹中評價
  • copyright 2024編程學習大全網