『壹』 瓚呰秺XML鍜孞SON錛歒AML錛孞ava寮鍙戜漢鍛樼殑鏂伴夋嫨
銆銆 涓篔ava寮鍙戣呭簹AML鏂囦歡鏍煎紡鍋氫竴涓楂樼駭浠嬬粛 鎵懼嚭瀹冧笌XML鍜孞SON鐨勪笉鍚屼箣澶 騫舵楠屽畠鐨勪紭瓚婃у拰緙洪櫡
銆銆鎵鏈夊姩鎬佽璦錛堝俁uby Groovy Python絳夛級鍙婂叾鐩稿叧鐨勬嗘灦錛堝俁uby on rails錛夌櫨瀹朵簤楦 灝界¢槄璇繪湰鏂囩殑澶ч儴鍒咼ava寮鍙戣呮瘡澶╃殑澶у氭暟宸ヤ綔閮芥槸澶勭悊綰綺圭殑java 涓旀湭鏉ュ氬勾閮藉皢濡傛 浣嗚繖騫朵笉鎰忓懗鐫浠栦滑涓嶈兘瀛︿範鏂扮殑鐭ヨ瘑 鍦ㄤ粬浠鐨勫叺鍣ㄥ簱涓娣誨姞鏂扮殑鍏靛櫒 鏈鏂囦粙緇峐AML錛圷AML涓嶆槸鏍囪拌璦鐨勭畝鍐欙級鏂囦歡鏍煎紡錛堜嬌鐢≧uby on rails妗嗘灦榪涜岃茶В 鍥犱負瀹冩墍鏈夌殑閰嶇疆鏂囦歡閮芥槸浣跨敤鐨刌AML錛変互鍙婂畠涓嶺ML鍜孞SON鐨勫尯鍒 鏈鍚庤ㄨ轟簡YAML鐨勪紭鍔垮拰緙虹偣
銆銆 絀烘牸緙╄繘鍜孞SON閫夐」
銆銆YAML鏂囦歡鏍煎紡涓昏侀泦涓浜庣┖鏍肩緝榪涚殑姒傚康 瀹冪敤浜庢寚鍑烘暟鎹鐨勫眰嬈$粨鏋 鈥 鑰屼笉鏄浣跨敤XML宓屽楁爣璁版垨JSON鐨勫ぇ鎷鍙鳳紙{}錛夊拰鏂規嫭鍙鳳紙[]錛 瀹為檯涓 瀹冩槸JSON鐨勪竴涓瓚呴泦 鍥犳 鍦ㄤ嬌鐢ㄧ殑鏃跺 浣犲彲鑳介渶瑕侀噰鐢↗SON椋庢牸鐨勮娉曟潵璺沖嚭絀烘牸嫻 瀹冪殑鍒涘嬩漢灝嗗叾褰㈠逛負 涓烘墍鏈夌紪紼嬭璦鎻愪緵浜烘у寲鐨勬暟鎹搴忓垪鍖栨爣鍑 浠ユ垜鐨勭粡楠屾潵鐪 鍏墮噸鐐規槸浜烘у寲 涓嬮潰鏄涓涓浣跨敤絀烘牸緙╄繘鐨刌AML鏍蜂緥 鍒涘緩YAML鏂囦歡鏃朵笉瀹滀嬌鐢ㄥ滻瀹氬藉害瀛椾綋 鍥犱負絀烘牸鏄寰堝叧閿鐨 錛堝弬鑰冧晶杈規爮 YAML鍜屾爣絳
銆銆JFrame: defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame width: height: ponents: JTextArea: name: textArea text: | This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags or anything like that JButton: name: button text: Button
銆銆 渚ц竟鏍 YAML鍜屾爣絳 鍩轟簬絀烘牸緙╄繘鐨勪換涓鏂囦歡鏍煎紡鏈甯歌佺殑闂棰樹箣涓鏄濡備綍瑙i噴鏍囩 鍦ㄨ繖涓猋AML渚嬪瓙涓 絳旀堢浉褰撶畝鍗 瀹冧笉鏀鎸佹爣絳 浣跨敤鏍囩懼瓧絎︾緝榪涗唬鏇跨┖鏍煎皢浼氬艱嚧澶勭悊寮傚父
銆銆闅忎綘鍠滄 浣犲彲浠ュ湪浠諱綍鑺傜偣浣跨敤JSON椋庢牸璇娉曟垨娣峰悎璇娉 渚嬪 涓婇潰鐨勪緥瀛愬彲鏀逛負
銆銆JFrame: defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame width: height: ponents: JTextArea: name: textArea text: | This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags or anything like that JButton: {name: button text: Button } #JSON椋庢牸璇娉
銆銆鍦ㄥ簳灞傝妭鐐癸紙鍗沖畠浠娌℃湁瀛愯妭鐐 姝e備綘鐚滄祴鐨勯偅鏍 浜曞彿閿鍦╕AML涓鏄鐢ㄦ潵娉ㄩ噴鐨勶級鍒囨崲浣跨敤JSON椋庢牸璇娉曟樉寰楃壒鍒鏈夌敤
銆銆 YAML緇撴瀯緇勪歡
銆銆鍓嶉潰宸茬粡鐪嬩簡涓涓綆鍗曠殑YAML渚嬪瓙 涓嬮潰璁╂垜浠涓璧鋒潵浜嗚В涓涓媃AML鐨勭粨鏋 hash list 鍜宐lock literal
銆銆 hash錛堟暎鍒楋級
銆銆閫氳繃緙╄繘瀛愭靛拰鍦ㄥ叧閿瀛椾笌鍊間箣闂翠嬌鐢ㄥ啋鍙鳳紙:錛夋潵鍒嗗壊瀹炵幇hash鐨勫壋寤 濡
銆銆JFrame: defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame width: height:
銆銆榪樻湁涓縐嶆柟娉曞氨鏄浣跨敤涓嶫SON鍏煎圭殑澶ф嫭鍙瘋娉曪紙{}錛夎娉 姣忎竴瀵瑰叧閿瀛/鍊間嬌鐢ㄩ楀彿錛 錛夊垎鍓 濡
銆銆JFrame: {defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame
銆銆width: height: }
銆銆 list錛堟竻鍗曪級
銆銆閫氳繃鍦ㄦ瘡涓猯ist鍏冪礌鍓嶆斁涓涓鍑忓彿錛 錛夋潵鍒涘緩list 涓庣┖鏍肩緝榪涗竴璧鋒瀯鎴愪簡YAML鐨勫熀鐭
銆銆ponents: JTextArea Jbutton
銆銆榪樻湁涓縐嶆柟娉曞氨鏄浣跨敤JSON鍏煎圭殑鏂規嫭鍙鳳紙[]錛夎娉 濡
銆銆ponents: [JTextArea JButton]
銆銆 block literal錛堟枃瀛楀潡錛
銆銆榪欐槸YAML鐨勪寒鐐 鐗瑰埆鏄涓嶺ML鐩告瘮 瀹冪殑CDATA鏄懼緱鐩稿綋綆闄 block literal鍙浠ュ皢澶у潡鏂囨湰緇嗚嚧鍦版彃鍏ユ枃浠朵腑 浣犲彲浠ヤ嬌鐢ㄧ珫綰匡紙|錛夋寚浠ゅ湪浣犵殑鏂囨湰涓淇濈暀鏂拌 濡
銆銆text: | This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags or anything like that
銆銆YAML緙栬瘧鍣ㄥ皢浼氫粠絎涓琛岀殑絎涓涓鏂囨湰瀛楃﹀紑濮嬬紪璇戱紙騫朵涪鎺夋墍鏈夌殑緙╄繘絀烘牸錛 浣嗘槸浼氬湪浣犵殑鏂囨湰涓淇濈暀鏂拌
銆銆鍙﹀ 浣犺繕鍙浠ヤ嬌鐢ㄥぇ浜庣﹀彿錛>錛夊憡璇塝AML緙栬瘧鍣ㄧ粰鎵鏈夋柊琛屽姞涓婃潯綰 騫跺皢杈撳叆鐨勬枃鏈浣滀負涓涓闀胯屽勭悊
銆銆text: > This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags or anything like that
銆銆闄や簡榪欎袱涓鎸囦護涔嬪 浣犺繕鍙浠ヤ嬌鐢ㄧ珫綰垮拰鍔犲彿錛坾+錛 瀹冪粰浣嶄簬鍓嶉潰鐨勭┖鏍煎姞涓婃潯綰 淇濈暀鏂拌屽拰鏈灝劇殑絀烘牸 榪樺彲浠ヤ嬌鐢ㄥぇ浜庡彿鍜屽噺鍙鳳紙> 錛 瀹冪粰鎵鏈夌殑絀烘牸鍔犱笂鏉$汗
銆銆 YAML VS XML鍜孞SON
銆銆姝e備綘浠庡墠闈渚嬪瓙涓娓呮氬湴鐪嬪埌閭f牱 YAML娌℃湁XML閭d箞鍟板棪浜 澶ч儴鍒哬AML鏂囦歡鍐呭瑰氨鏄鐪熷疄鐨勬暟鎹 娌℃湁浜嗘棤絀峰敖鐨勬墦寮鍜屽叧闂鏍囪板垪琛 鍦╔ML涓 榪欎簺鏍囪板線寰姣斿畠浠鎻忚堪鐨勬暟鎹榪樺ぇ YAML鏇撮傚悎浣犻渶瑕佹墜宸ョ淮鎶ょ殑鏁版嵁鏂囦歡綾誨瀷
銆銆YAML娌℃湁鎻愪緵鏂規堟垨DTD姒傚康 鍥犳ゆ棤娉曢獙璇佹枃浠舵牸寮忔槸鍚︾﹀悎浣犵殑棰勬湡 XML鐨勫暟鍡︿篃鏈夊畠鐨勪環鍊 浣嗘葷殑璇存潵鏄鍥犱負XML鐨勬垚鐔熶嬌瀹冨叿鏈夊ぇ閲忛濆栫殑宸ュ叿鏉ラ獙璇佸畠鐨勬牸寮 鑰孻AML榪樻病鏈
銆銆JSON涔熼傚悎涓庝換浣曟暟鎹 瀹冧富瑕侀潰鍚戞彁楂樻ц兘鍜屾枃浠跺昂瀵哥殑澶у皬 鍥犱負瀹冨嚑涔庝笉浣跨敤絀烘牸鍜屽叧闂鏍囩 鐒惰 JSON鏂囦歡鐨勫唴瀹瑰炲姞浜嗗嶆潅鎬 瀹冪殑鍏抽棴鏍囪瘑灝辮薄涓嬪湴鐙變竴鏍 榪欏氨鏄疛avaFx浠g爜錛堝畠鍩轟簬JSON錛変腑鍙瑙佺殑鏈鐥涜嫤鐨勪簡 鍦ㄦ暟鎹鏂囦歡涓 浣跨敤UI緇撴瀯浣跨粨鏋滄洿澶嶆潅 鍏跺嶆潅紼嬪害鍑犱箮浣挎枃浠跺彉寰楁棤娉曠悊瑙
銆銆鏌ョ湅鐨凧avaFx紺轟緥浠g爜錛堢偣鍑 Edit this page 閾炬帴錛 璇風壒鍒鐣欏績瀹冩槸濡備綍緇撴潫鐨
銆銆
銆銆} } } } ] } } center: bookPanel }
銆銆鎺哄拰浜唟}緇撴瀯鍜孾]娓呭崟 浣垮緱鎵嬪伐緇存姢澶у瀷鐨凧SON椋庢牸鐨勬枃浠跺彉寰楃浉褰撳洶闅 YAML浣跨敤瀹冪殑絀烘牸緙╄繘鏂規硶宸у欏湴瑙e喅浜嗚繖涓闂棰 褰撶劧 鏃犺轟綍鏃 浣犻兘鍙浠ュ垏鎹㈠埌JSON椋庢牸鐨勮娉曪紙濡傚湪搴曞眰鑺傜偣錛
銆銆瑙f瀽YAML鏂囦歡鏈甯哥敤鐨凧ava搴撴槸JvYAML錛堬級 JRuby錛堝湪Java VM涓婅繍琛屽姩鎬佽璦鐨凴uby鐗堟湰錛夊湪瀹冪殑Ruby on Rails妗嗘灦涓鐨勮繘鍑哄彛浣跨敤JvYAML JvYAML鎻愪緵浜嗘枃浠朵竴鑸澶勭悊鐨勫姛鑳斤紙鍦ㄥ墠闈㈤偅涓渚嬪瓙涓 瀹冭繑鍥炰簡涓涓鏍囧噯Java瀛楃︿覆 Long Map鍜孡ist瀵硅薄鐨勫祵濂椾綋緋葷粨鏋勶級 浣跨敤闈欐乨ump()鏂規硶淇濆瓨涓烘枃浠 鐒跺悗浣跨敤闈欐乴oad()鏂規硶杞藉叆 渚嬪
銆銆
銆銆YAML mp(Object data Writer output); Object data = YAML load(Reader io);
銆銆鍙傝冧晶杈規爮 鍩轟簬YAML鐨勫紑婧愰」鐩浜嗚В鍏充簬鍩轟簬YAML鐨勫紑婧愰」鐩淇℃伅 浠ュ強濡備綍鍦↗ava涓瑁呭叆涓涓璇存槑鐨刄I
銆銆 渚ц竟鏍 鍩轟簬YAML鐨勫紑婧愰」鐩 璇峰師璋呮垜鍦ㄨ繖閲屽帤鑴哥毊鍦頒粙緇嶆垜浠鑷宸辯殑寮婧愰」鐩 褰撴垜鐪熺殑涓嶇煡閬撻櫎浜咼Ruby澶栧叾浠栫殑鍩轟簬YAML鐨勫紑婧愰」鐩 JRuby鐨凴uby on Rails妗嗘灦瀹炵幇涓ラ噸渚濊禆YAML 鑰屼笉鏄疿ML鎴朖SON 鐪嬬湅鎴戠殑Java Builder搴撳惂錛堬級 瀹冨埄鐢╕AML鏂囦歡鎻愪緵浜嗕竴縐嶆柟娉曞畾涔夊睆騫曟帶鍒 甯冨矓 浜嬩歡綰胯礬鍜屾暟鎹緇戝畾 浠ュ疄鐜板皢璇存槑UI瑁呭叆Java
銆銆瀹為檯涓 YAML鏂囦歡鐪熺殑闈炲父綆鍗 鐢氳嚦浣犲彲浠ヤ嬌鐢ㄤ換浣曠殑鏂囨湰緙栬緫鍣ㄩ兘鍙浠ョ淮鎶ゅ畠 浣嗘湁浜涗笓闂ㄧ殑鏂囨湰緙栬緫鍣ㄦ彁渚涗簡璇娉曞姞浜鍔熻兘 榪欏圭淮鎶ゅ伐浣滃緢鏈夊府鍔 瀵笶clipse鑰岃█ 鏈塃clipse YAML editor錛堬級 瀵筃etBeans鑰岃█ 浣犲彲浠ヤ嬌鐢ㄦ潵鑷猂uby鍖咃紙錛夌殑YAML緙栬緫鍣 鐒惰 鍦∟etBeans 涓鐨刌AML緙栬緫鍣ㄥ苟娌℃湁浠涔堢敤澶 瀹冨彧鏀鎸乊AML寰堝皬鐨勪竴涓瀛愰泦錛堜緥濡 瀹冧笉鏀鎸乥lock literal錛 甯屾湜鍦∟etBeans 涓鐨刌AML緙栬緫鍣ㄨВ鍐充簡榪欎釜闂棰
銆銆鎴戞病鏈夋満浼氭祴璇旾ntelliJ IDEA 浣嗘垜鎺ㄦ祴瀹冪殑Ruby on Rails鎻掍歡錛+IDEA+Ruby+Plugin錛夐檮甯︿簡YAML緙栬緫鍣
銆銆 娣誨姞YAML宸ュ叿
lishixin/Article/program/Java/JSP/201311/19416
『貳』 java中xml文件格式中的<>怎麼打
好吧,給自動轉換了,「&=l=t=;=」「&=g=t=;=」 第一個是小寫的L。把=號全去掉。因為不加=會被自動轉換掉
『叄』 java編程中Properties類的具體作用和使用!
如果不熟悉 java.util.Properties類,那麼現在告訴您它是用來在一個文件中存儲鍵-值對的,其中鍵和值是用等號分隔的。(如清單 1 所示)。最近更新的java.util.Properties 類現在提供了一種為程序裝載和存儲設置的更容易的方法: loadFromXML(InputStreamis) 和 storeToXML(OutputStream os, String comment) 方法。
一下是詳細的說明,希望能給大家帶來幫助。
清單 1. 一組屬性示例
foo=bar
fu=baz
將清單 1 裝載到 Properties 對象中後,您就可以找到兩個鍵( foo 和 fu )和兩個值( foo 的 bar 和 fu 的baz )了。這個類支持帶 \u 的嵌入 Unicode 字元串,但是這里重要的是每一項內容都當作 String 。
清單2 顯示了如何裝載屬性文件並列出它當前的一組鍵和值。只需傳遞這個文件的 InputStream 給 load()方法,就會將每一個鍵-值對添加到 Properties 實例中。然後用 list() 列出所有屬性或者用 getProperty()獲取單獨的屬性。
清單 2. 裝載屬性
import java.util.*;
import java.io.*;
public class LoadSample {
public static void main(String args[]) throws Exception {
Properties prop = new Properties();
FileInputStream fis =
new FileInputStream("sample.properties");
prop.load(fis);
prop.list(System.out);
System.out.println("\nThe foo property: " +
prop.getProperty("foo"));
}
}
運行 LoadSample 程序生成如清單 3 所示的輸出。注意 list() 方法的輸出中鍵-值對的順序與它們在輸入文件中的順序不一樣。Properties 類在一個散列表(hashtable,事實上是一個 Hashtable 子類)中儲存一組鍵-值對,所以不能保證順序。
清單 3. LoadSample 的輸出
-- listing properties --
fu=baz
foo=bar
The foo property: bar
XML 屬性文件
這里沒有什麼新內容。 Properties 類總是這樣工作的。不過,新的地方是從一個 XML 文件中裝載一組屬性。它的 DTD 如清單 4 所示。
清單 4. 屬性 DTD
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTD for properties -->
<!ELEMENT properties ( comment?, entry* ) >
<!ATTLIST properties version CDATA #FIXED "1.0">
<!ELEMENT comment (#PCDATA) >
<!ELEMENT entry (#PCDATA) >
<!ATTLIST entry key CDATA #REQUIRED>
如果不想細讀 XML DTD,那麼可以告訴您它其實就是說在外圍 <properties> 標簽中包裝的是一個<comment> 標簽,後面是任意數量的 <entry> 標簽。對每一個 <entry>標簽,有一個鍵屬性,輸入的內容就是它的值。清單 5 顯示了 清單 1中的屬性文件的 XML 版本是什麼樣子的。
清單 5. XML 版本的屬性文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM " http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Hi</comment>
<entry key="foo">bar</entry>
<entry key="fu">baz</entry>
</properties>
如果清單 6 所示,讀取 XML 版本的 Properties 文件與讀取老格式的文件沒什麼不同。
清單 6. 讀取 XML Properties 文件
import java.util.*;
import java.io.*;
public class LoadSampleXML {
public static void main(String args[]) throws Exception {
Properties prop = new Properties();
FileInputStream fis =
new FileInputStream("sampleprops.xml");
prop.loadFromXML(fis);
prop.list(System.out);
System.out.println("\nThe foo property: " +
prop.getProperty("foo"));
}
}
關於資源綁定的說明
雖然 java.util.Properties 類現在除了支持鍵-值對,還支持屬性文件作為 XML 文件,不幸的是,沒有內置的選項可以將ResourceBundle 作為一個 XML 文件處理。是的, PropertyResourceBundle 不使用 Properties對象來裝載綁定,不過裝載方法的使用是硬編碼到類中的,而不使用較新的 loadFromXML() 方法。
運行清單 6 中的程序產生與原來的程序相同的輸出,如 清單 2所示。
保存 XML 屬性
新的 Properties 還有一個功能是將屬性存儲到 XML 格式的文件中。雖然 store() 方法仍然會創建一個類似 清單 1所示的文件,但是現在可以用新的 storeToXML() 方法創建如 清單 5 所示的文件。只要傳遞一個 OutputStream和一個用於注釋的 String 就可以了。清單 7 展示了新的 storeToXML() 方法。
清單 7. 將 Properties 存儲為 XML 文件
import java.util.*;
import java.io.*;
public class StoreXML {
public static void main(String args[]) throws Exception {
Properties prop = new Properties();
prop.setProperty("one-two", "buckle my shoe");
prop.setProperty("three-four", "shut the door");
prop.setProperty("five-six", "pick up sticks");
prop.setProperty("seven-eight", "lay them straight");
prop.setProperty("nine-ten", "a big, fat hen");
FileOutputStream fos =
new FileOutputStream("rhyme.xml");
prop.storeToXML(fos, "Rhyme");
fos.close();
}
}
運行清單 7 中的程序產生的輸出如清單 8 所示。
清單 8. 存儲的 XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM " http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Rhyme</comment>
<entry key="seven-eight">lay them straight</entry>
<entry key="five-six">pick up sticks</entry>
<entry key="nine-ten">a big, fat hen</entry>
<entry key="three-four">shut the door</entry>
<entry key="one-two">buckle my shoe</entry>
</properties>
在這里改了一個例子:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 實現properties文件的讀取
* @author haoxuewu
*/
public class Test {
public static void main(String[] args) {
try {
long start = System.currentTimeMillis();
InputStream is = new FileInputStream("conf.properties");
Properties p = new Properties();
p.load(is);
is.close();
System.out.println("SIZE : " + p.size());
System.out.println("homepage : " + p.getProperty("homepage"));
System.out.println("author : " + p.getProperty("author"));
System.out.println("school : " + p.getProperty("school"));
long end = System.currentTimeMillis();
System.out.println("Cost : " + (end - start));
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
conf.properties
# Configuration file
homepage = http://www.blogjava.net/haoxuewu
author = bbflyerwww
school = jilinjianzhugongchengxueyuan
Result
SIZE:3
homepage : http://www.blogjava.net/haoxuewu
author : bbflyerwww
school : jilinjianzhugongchengxueyuan
『肆』 XStream將java對象轉換為xml時,對象欄位中的下劃線「_」,轉換後變成了兩個
warning: [deprecation] XppDriver(com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer) in com.thoughtworks.xstream.io.xml.XppDriver has been deprecated
已經過時的方法,所以,不會調用此方法。