利用XStream将List<String>转为xml后指定String的别名

本文介绍了一个使用Java XStream库进行自定义对象序列化的示例。通过注册本地转换器,可以控制对象转为XML时的标签名称。示例中定义了一个包含标签列表的简单类,并展示了如何将这些标签以特定格式序列化到XML中。
	public class Test {
	    public List<String> tags = new ArrayList<String>();
	    public List<String> notags = new ArrayList<String>();
	    public Test(String tag, String tag2) {
	        tags.add(tag); tags.add(tag2);
	        notags.add(tag); notags.add(tag2);
	    }
	    public static void main(String[] args) {
	        Test test = new Test("foo", "bar");
	        XStream xstream = new XStream();

	        ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());
	        mapper.addClassAlias("tag", String.class);
	        xstream.registerLocalConverter(
	            Test.class,
	            "tags",
	            new CollectionConverter(mapper)
	        );

	        System.out.println(xstream.toXML(test));
	    }

打印结果:
  <tags>
    <tag>foo</tag>
    <tag>bar</tag>
  </tags>
  <notags>
    <string>foo</string>
    <string>bar</string>
  </notags>
<lib> <name>createVolumeDP</name> <code>runlib:checkdplicense| runlib:makecachewarnings| clearversion:PagePool| domethodsstop:91| jumpif:$v.canbecompressed:!=:true:SKIP2| goto:sizeopt| stop| label:SKIP2| goto:size| stop| </code> </lib>这是一个xml我想找到<xml> <title>Create Volume</title> <helpcontextid>CreateVolume</helpcontextid> <width>800</width> <height>630</height> <windowtype>single</windowtype> <icon>12</icon> <firstcard></firstcard> <createobject>volume</createobject> <createdefaultname>yes</createdefaultname> <finishnowcaption>Create Now</finishnowcaption> <requireconfigstore>true</requireconfigstore> <vars> <var> <name>basename</name> <type>String</type> </var> <var> <name>skipdisks</name> <type>String</type> </var> <var> <name>fromcmm</name> <type>boolean</type> <value>false</value> </var> <var> <name>fromload</name> <type>boolean</type> <value>false</value> </var> <var> <name>sourcesecure</name> <type>boolean</type> <value>false</value> </var> <var> <name>runmap</name> <type>boolean</type> <value>false</value> </var> <var> <name>runnewmap</name> <type>boolean</type> <value>false</value> </var> <var> <name>linkerran</name> <type>boolean</type> <value>false</value> </var> <var> <name>mapran</name> <type>boolean</type> <value>false</value> </var> <var> <name>diskgroupid</name> <type>int</type> </var> <var> <name>pagepoolindex</name> <type>int</type> </var> <var> <name>importTemplate</name> <type>object</type> </var> <var> <name>CopyReplaySchedules</name> <type>boolean</type> <value>false</value> </var> <var> <name>convertToBlocks</name> <type>boolean</type> <value>false</value> </var> <var> <name>volumetoduplicate</name> <type>object</type> </var> <var> <name>columnList</name> <type>string</type> <value>DiskFolderName:COLUMN_HEAD_DISK_FOLDER:180|redundancy:COLUMN_HEAD_REDUNDANCY:180|DataPageSizeDisplay:COLUMN_HEAD_DATAPAGE_SIZE:180|status:COLUMN_HEAD_STATUS:100</value> </var> <var> <name>lastcard</name> <type>String</type> </var> <var> <name>pageclassmode</name> <value>0</value> </var> <var> <name>sizewarning</name> <type>string</type> </var> <var> <name>sizewarning2</name> <type>string</type> </var> <var> <name>SystemReadCacheWarning</name> <type>string</type> </var> <var> <name>SystemWriteCacheWarning</name> <type>string</type> </var> <var> <name>tier1writable</name> <type>string</type> <value></value> </var> <var> <name>tier2writable</name> <type>string</type> <value></value> </var> <var> <name>tier3writable</name> <type>string</type> <value></value> </var> <var> <name>tier1replay</name> <type>string</type> <value></value> </var> <var> <name>tier2replay</name> <type>string</type> <value></value> </var> <var> <name>tier3replay</name> <type>string</type> <value></value> </var> <var> <name>selectedtemplate</name> <type>string</type> <value></value> </var> <var> <name>selectedTemplateName</name> <type>string2</type> <value><None></value> </var> <var> <name>NONE</name> <type>string2</type> <value><None></value> </var> <var> <name>dpColumns</name> <type>string</type> <value>blank::25:false:false:0:::Cost|raidlevellabel:COLUMN_HEAD_RAID_LEVEL:90|DiskSpeedZone:COLUMN_HEAD_DISK_TRACKS_USED:100|selectedwritable:COLUMN_HEAD_WRITABLE_DATA:90:false:false:11:true:false|selectedhistorical:COLUMN_HEAD_REPLAY_DATA:80:false:false:11:true:false|</value> </var> <var> <name>userProfilesFound</name> <type>boolean</type> <value>false</value> </var> <var> <name>ReplayTemplateVector</name> <type>vector</type> </var> <var> <name>SelectedTemplatesVector</name> <type>vector</type> </var> <var> <name>selectedReplayProfilesStr</name> <type>string</type> <value></value> </var> <var> <name>comma</name> <type>string</type> <value>, </value> </var> <var> <name>labelValue1</name> <type>string</type> <value>Storage Profile:</value> </var> <var> <name>labelValue2</name> <type>string</type> <value>RAID Types:</value> </var> <var> <name>labelValue3</name> <type>string</type> <value>Storage Tier:</value> </var> <var> <name>storageLabel1</name> <type>string</type> <value>Storage Profile:</value> </var> <var> <name>storageLabel2</name> <type>string</type> <value></value> </var> <var> <name>storageValue1</name> <type>string</type> <value></value> </var> <var> <name>storageValue2</name> <type>string</type> <value></value> </var> <var> <name>storageTierText</name> <type>string</type> <value>Select the RAID and Storage Tier settings for this volume:</value> </var> <var> <name>textValue1</name> <type>string</type> <value>Select the RAID and Storage Tier settings for this volume:</value> </var> <var> <name>textValue2</name> <type>string</type> <value>Select the Storage Tier setting for this volume:</value> </var> <var> <name>defaultServer</name> <type>object</type> </var> <var> <name>colon</name> <type>string</type> <value>:</value> </var> <var> <name>dataoptimization</name> <type>boolean</type> <value>false</value> </var> <var> <name>canbecompressed</name> <type>boolean</type> <value>false</value> </var> <var> <name>compressionLabelString</name> <type>string</type> <value>Compression Enabled:</value> </var> <var> <name>compressionLabel</name> <type>string</type> <value></value> </var> <var> <name>compressionValue</name> <type>string</type> <value></value> </var> </vars> <cards> <card> <id>diskfolder</id> <region>diskfolder</region> <regionstart>diskfolder</regionstart> <url>wiz/eng/html/questions/CreateVolume/Disks.htm</url> <tab>2</tab> <contextid>1</contextid> <code>setattr:$v.lastcard:diskfolder</code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>runlib:selectdisk</actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>redundancy</id> <region>redundancy</region> <regionstart>redundancy</regionstart> <url>wiz/eng/html/questions/CreateVolume/Redundancy.htm</url> <tab>1</tab> <contextid>1</contextid> <code>setattr:$v.lastcard:redundancy</code> <buttons> <menuitem> <defaultlabel>Non-Redundant</defaultlabel> <labelkey>0498</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>setattr:$v.diskFailureProtection:0| setattr:$v.dfPagepoolVector:nonredundantPagepools| setattr:$p.primetype:non-redundant| setattr:$p.diskFailureProtection:0| setattr:$v.storageTierText:$v.textValue2| runlib:checkNonRedundant| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> <menuitem> <defaultlabel>Redundant</defaultlabel> <labelkey>0499</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>setattr:$v.diskFailureProtection:1| setattr:$v.dfPagepoolVector:redundantPagepools| setattr:$p.primetype:redundant| setattr:$p.diskFailureProtection:1| setattr:$v.storageTierText:$v.textValue1| runlib:checkRedundant| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>selectpagepool</id> <region>selectpagepool</region> <regionstart>selectpagepool</regionstart> <url>wiz/eng/html/questions/CreateVolume/SelectPagepool.htm</url> <contextid>1</contextid> <code>setattr:$v.lastcard:selectpagepool</code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>runlib:selectPagepool|</actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>bpwait</id> <region>bpwait</region> <regionstart>bpwait</regionstart> <url>wiz/eng/html/questions/bpwait2.htm</url> <tab>1</tab> <contextid>1</contextid> <donecode>stopif:$w.doneEventSuccess:=:false| runbackground:postsave| </donecode> </card> <card> <id>pagepooldown</id> <region>pagepooldown</region> <regionstart>pagepooldown</regionstart> <url>wiz/eng/html/questions/CreateVolume/PagepoolDown.htm</url> <tab>1</tab> <contextid>1</contextid> <buttons> <menuitem> <defaultlabel>Close</defaultlabel> <labelkey>0112</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>return</actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> <menuitem> <defaultlabel>Retry</defaultlabel> <labelkey>3021</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>goto:diskfolder</actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>pagepooldown2</id> <region>pagepooldown2</region> <regionstart>pagepooldown2</regionstart> <url>wiz/eng/html/questions/CreateVolume/PagepoolDown.htm</url> <tab>1</tab> <contextid>1</contextid> <hideback>true</hideback> <buttons> <menuitem> <defaultlabel>Close</defaultlabel> <labelkey>0112</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>return</actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>size</id> <region>size</region> <regionstart>size</regionstart> <url>wiz/eng/html/questions/CreateVolume/DynamicSize.htm</url> <tab>1</tab> <contextid>1</contextid> <code>domethodsstop:85| jumpif:$u.DPPrompt:!=:true:CHECKCACHE| stop| label:CHECKCACHE| jumpif:$u.cacheprompt:!=:true:SKIP| stop| label:SKIP| goto:sizenoadvance| stop| </code> <buttons> <menuitem> <defaultlabel>Advanced</defaultlabel> <labelkey>3020</labelkey> <defaulttooltip>Change advanced settings for this Volume</defaulttooltip> <tooltipkey>3263</tooltipkey> <imagekey>0112</imagekey> <actioncommand>domethodsstop:13| refresh| jumpif:$m.expandsize:igt:$w.MaxVolBlockCount:TOOBIG| jumpif:$m.expandsize:ilt:$m.DataPageSize:TOOSMALL| goto:dp| stop| label:TOOBIG| getmsg:3269:$v.emsg:$w.MaxVolSizeStr| msgbox:$v.emsg:$w.title:E| stop| label:TOOSMALL| getmsg:3268:$v.sizeMsg:$m.minsize| msgbox:$v.sizeMsg:$w.title:W| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>domethodsstop:13| refresh| jumpif:$m.expandsize:igt:$w.MaxVolBlockCount:TOOBIG| jumpif:$m.expandsize:ilt:$m.DataPageSize:TOOSMALL| runlib:checkprogression| goto:replay| stop| label:TOOBIG| concat:The maximum size of a Volume is~:$w.MaxVolSizeStr:$v.emsg| concat:$v.emsg:.:$v.emsg| msgbox:$v.emsg:$w.title:E| stop| label:TOOSMALL| getmsg:3268:$v.sizeMsg:$m.minsize| msgbox:$v.sizeMsg:$w.title:W| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>sizeopt</id> <region>size</region> <regionstart>size</regionstart> <url>wiz/eng/html/questions/CreateVolume/DynamicSizeOpt.htm</url> <tab>1</tab> <contextid>1</contextid> <code>domethodsstop:85| jumpif:$u.DPPrompt:!=:true:CHECKCACHE| stop| label:CHECKCACHE| jumpif:$u.cacheprompt:!=:true:SKIP| stop| label:SKIP| goto:sizenoadvanceopt| stop| </code> <buttons> <menuitem> <defaultlabel>Advanced</defaultlabel> <labelkey>3020</labelkey> <defaulttooltip>Change advanced settings for this Volume</defaulttooltip> <tooltipkey>3263</tooltipkey> <imagekey>0112</imagekey> <actioncommand>domethodsstop:13| refresh| jumpif:$m.expandsize:igt:$w.MaxVolBlockCount:TOOBIG| jumpif:$m.expandsize:ilt:$m.DataPageSize:TOOSMALL| goto:dp| stop| label:TOOBIG| getmsg:3269:$v.emsg:$w.MaxVolSizeStr| msgbox:$v.emsg:$w.title:E| stop| label:TOOSMALL| getmsg:3268:$v.sizeMsg:$m.minsize| msgbox:$v.sizeMsg:$w.title:W| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>domethodsstop:13| refresh| jumpif:$m.expandsize:igt:$w.MaxVolBlockCount:TOOBIG| jumpif:$m.expandsize:ilt:$m.DataPageSize:TOOSMALL| runlib:checkprogression| goto:replay| stop| label:TOOBIG| concat:The maximum size of a Volume is~:$w.MaxVolSizeStr:$v.emsg| concat:$v.emsg:.:$v.emsg| msgbox:$v.emsg:$w.title:E| stop| label:TOOSMALL| getmsg:3268:$v.sizeMsg:$m.minsize| msgbox:$v.sizeMsg:$w.title:W| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>sizenoadvance</id> <region>size</region> <regionstart>size</regionstart> <url>wiz/eng/html/questions/CreateVolume/DynamicSize.htm</url> <tab>1</tab> <contextid>1</contextid> <code></code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand> copy:$m:$q| domethodsstop:13| refresh| jumpnull:$i:OKCOPY| jumpif:$i.type:!=:wizvar:OKCOPY| jumpif:$i.CopyVolume:=:false:OKCOPY| jumpif:$m.expandsize:igt=:$q.expandsize:OKCOPY| msgbox:The destination volume cannot be smaller than the source volume.:$w.title:E| stop| label:OKCOPY| jumpif:$m.expandsize:igt:$w.MaxVolBlockCount:TOOBIG| jumpif:$m.expandsize:ilt:$m.DataPageSize:TOOSMALL| runlib:checkprogression| goto:replay| stop| label:TOOBIG| concat:The maximum size of a Volume is~:$w.MaxVolSizeStr:$v.emsg| concat:$v.emsg:.:$v.emsg| msgbox:$v.emsg:$w.title:E| stop| label:TOOSMALL| getmsg:3268:$v.sizeMsg:$m.minsize| msgbox:$v.sizeMsg:$w.title:W| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>sizenoadvanceopt</id> <region>size</region> <regionstart>size</regionstart> <url>wiz/eng/html/questions/CreateVolume/DynamicSizeOpt.htm</url> <tab>1</tab> <contextid>1</contextid> <code></code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand> copy:$m:$q| domethodsstop:13| refresh| jumpnull:$i:OKCOPY| jumpif:$i.type:!=:wizvar:OKCOPY| jumpif:$i.CopyVolume:=:false:OKCOPY| jumpif:$m.expandsize:igt=:$q.expandsize:OKCOPY| msgbox:The destination volume cannot be smaller than the source volume.:$w.title:E| stop| label:OKCOPY| jumpif:$m.expandsize:igt:$w.MaxVolBlockCount:TOOBIG| jumpif:$m.expandsize:ilt:$m.DataPageSize:TOOSMALL| runlib:checkprogression| goto:replay| stop| label:TOOBIG| concat:The maximum size of a Volume is~:$w.MaxVolSizeStr:$v.emsg| concat:$v.emsg:.:$v.emsg| msgbox:$v.emsg:$w.title:E| stop| label:TOOSMALL| getmsg:3268:$v.sizeMsg:$m.minsize| msgbox:$v.sizeMsg:$w.title:W| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>dp</id> <region>dp</region> <regionstart>dp</regionstart> <url>wiz/eng/html/questions/CreateVolume/DataProgression.htm</url> <tab>1</tab> <contextid>1</contextid> <code>stopif:$u.DPPrompt:=:true| goto:advancedoptions| stop| </code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>runlib:checkprogression| goto:advancedoptions| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>advancedoptions</id> <region>advancedoptions</region> <regionstart>advancedoptions</regionstart> <url>wiz/eng/html/questions/CreateVolume/AdvancedOptions.htm</url> <tab>2</tab> <contextid>1</contextid> <code>jumpif:$v.SystemReadCacheWarning:!=::TWO| jumpif:$v.SystemWriteCacheWarning:!=::TWO| stopif:$u.cacheprompt:=:true| goto:replay| stop| label:TWO| goto:advancedoptions2| </code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>setattrint:$m.RCacheRAStatus:$m.RCacheStatus| goto:replay| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>advancedoptions2</id> <region>advancedoptions2</region> <regionstart>advancedoptions2</regionstart> <url>wiz/eng/html/questions/CreateVolume/AdvancedOptions2.htm</url> <tab>2</tab> <contextid>1</contextid> <code>stopif:$u.cacheprompt:=:true| goto:replay </code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>setattrint:$m.RCacheRAStatus:$m.RCacheStatus| goto:replay </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>replay</id> <region>replay</region> <regionstart>replay</regionstart> <url>wiz/eng/html/questions/CreateVolume/TemplateSelection.htm</url> <tab>1</tab> <contextid>1</contextid> <code>jumpnull:$l:LICENSED| jumpif:$l.Enabled^13:=:1:LICENSED| goto:save| stop| label:LICENSED| jumpif:$u.ReplayOption:i=:1:CONTINUE| jumpif:$u.ReplayOption:i=:0:SAVE| jumpif:$u.ReplayOption:i=:2:SAVE| jump:CONTINUE| label:SAVE| goto:save| stop| label:CONTINUE| </code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>goto:save| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>save</id> <region>save</region> <regionstart>save</regionstart> <url>wiz/eng/html/questions/CreateVolume/Save.htm</url> <adminurl>wiz/eng/html/questions/CreateVolume/SaveAdmin.htm</adminurl> <tab>1</tab> <contextid>1</contextid> <code></code> <buttons> <menuitem> <defaultlabel>Continue</defaultlabel> <labelkey>3001</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>jumpif:$w.userprivlevel:i=:5:ADMIN| jumpif:$m.parentobjectid:i!=:0:NOTROOT| getmsg:3397:$v.PrivWarning| msgbox:$v.PrivWarning:$w.title:W| stop| label:NOTROOT| label:ADMIN| setattr:$v.sizewarning:| setattr:$v.sizewarning2:| jumpif:$m.expandsize:ilt:4294967297:NONE| setattr:$v.sizewarning:Warning - Some operating systems do not support volumes greater than 2 TB.| setattr:$v.sizewarning2:Please verify that the server operating system supports volumes of this size.| label:NONE| jumpif:$v.skipfinish:=:true:SKIPFINISH| domethodsstop:$u:5| runlib:fixstoragelabels| runlib:fixcompressionlabels| goto:finish| stop| label:SKIPFINISH| return:$m:CREATE| stop| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> <card> <id>finish</id> <region>finish</region> <regionstart>finish</regionstart> <url>wiz/eng/html/questions/CreateVolume/FinishDP.htm</url> <tab>1</tab> <contextid>1</contextid> <code></code> <buttons> <menuitem> <defaultlabel>Create Now</defaultlabel> <labelkey>3002</labelkey> <defaulttooltip></defaulttooltip> <tooltipkey>-1</tooltipkey> <imagekey>0112</imagekey> <actioncommand>runlib:afterCreateVolumeDP| </actioncommand> <itemstate>ENABLED</itemstate> <sticky>0</sticky> <stickystate>0</stickystate> <priv>3</priv> </menuitem> </buttons> </card> </cards> <instructions> <lib> <name>start</name> <event>start</event> <code>setsize:800:630| runlib:setprimingdefaults| setattr:$v.diskgroupid:$u.diskgroupid| runlib:checktitle| jumpnull:$i:CONTINUE| jumpif:$i.type:!=:wizvar:CONTINUE| setobject:$i.sourcevolumeobject:$o| jumpnull:$o:CONTINUE| getstop:$o| setattr:$v.skiplinker:YES| setattr:$v.ExactDuplicate:$i.ExactDuplicate| setattr:$v.CopyVolume:$i.CopyVolume| setattr:$v.CopyReplaySchedules:$i.CopyReplaySchedules| setattr:$v.fromcmm:true| jumpif:$o.isSecure:=:false:NOSED| setattr:$v.sourcesecure:true| label:NOSED| setattr:$v.diskgroupid:$o.diskgroupid| runlib:checkduplicate| jumpif:$i.ExactDuplicate:=:true:EXACT| setattr:$m.name:$i.duplicatesname| jump:FINISH| label:EXACT| setattr:$m.name:$i.duplicatesname| setattr:$m.notes:$i.notes| setattr:$m.parentobjectid:$i.duplicatefolder| jumpif:$v.CopyReplaySchedules:!=:true:NOREPLAY| domethodsstop:$o:45| setattrobject:$v.importTemplate:$o.snapshotprofile| label:NOREPLAY| runlib:save| end| label:CONTINUE| jumpif:$v.InitialBlockCount:=::CONTINUE2| jumpif:$v.InitialBlockCount:=:0:CONTINUE2| // must be from Load/Restore VolumeFromExternalDevice| setattr:$v.fromload:true| setattr:$v.newname:$v.InitialDiskName| trim:$v.newname:64| jumpif:$v.newname:=::EMPTYNAME| setattr:$m.name:$v.newname| label:EMPTYNAME| setattr:$m.expandsize:$v.InitialBlockCount| setattr:$v.convertToBlocks:true| domethodsstop:$m:14| jumpif:$m.name:!=::FINISH| label:CONTINUE2| jumpif:$v.newname:=::EMPTYNAME2| setattr:$m.name:$v.newname| jump:FINISH| label:EMPTYNAME2| setattr:$v.basename:$u.VolumeBaseName| domethodsstop:15|//generate name| label:FINISH| getstop:$s| getstop:$u| setattr:$v.diskgroupid:$u.diskgroupid| runlib:fillreplayvectors| runlib:checkInput| runlib:setparent| runlib:setfirstcard| end| </code> </lib> <lib> <name>fillreplayvectors</name> <code>retrievetable:PITCRuleGroup:$g| vectorset:$g:$v.ReplayTemplateVector| jumpif:$v.fromcmm:=:true:SKIP| jumpif:$v.fromload:=:true:SKIP| jumpif:$u.ReplayOption:i=:0:SKIP| domethodsstop:$u:3| label:SKIP| </code> </lib> <lib> <name>setprimingdefaults</name> <code>setattr:$v.diskFailureProtection:1| setattr:$v.dfPagepoolVector:redundantPagepools| setattr:$p.primetype:redundant| setattr:$p.diskFailureProtection:1| </code> </lib> <lib> <name>setfirstcard</name> <code>jumpif:$v.skipdisks:=:YES:SKIPDF| jumpif:$u.diskgroupidprompt:=:true:DF| label:SKIPDF| jumpif:$u.redundantonly:=:false:REDUNDANCY| jump:RUNWIZARD| label:DF| setattr:$w.firstcard:diskfolder| stop| label:REDUNDANCY| setattr:$w.firstcard:redundancy| stop| label:RUNWIZARD| setattr:$w.firstcard:diskfolder| setattr:$v.diskFailureProtection:1| setattr:$v.dfPagepoolVector:redundantPagepools| setattr:$p.primetype:redundant| setattr:$p.diskFailureProtection:1| runlib:checkRedundant| stop| </code> </lib> <lib> <name>gotodiskfolder</name> <code>jumpif:$v.skipdisks:=:YES:SKIP| jumpif:$u.diskgroupidprompt:=:false:SKIP| goto:diskfolder| stop| label:SKIP| runlib:gotoredundancy| stop| </code> </lib> <lib> <name>gotoredundancy</name> <code>jumpif:$u.redundantonly:=:true:SKIP| goto:redundancy| stop| label:SKIP| setattr:$v.diskFailureProtection:1| setattr:$p.diskFailureProtection:1| runlib:checkRedundant| stop| </code> </lib> <lib> <name>checktitle</name> <code>setattr:$w.replacetitle:Create Volume| </code> </lib> <lib> <name>checkInput</name> <code>jumpnull:$i:INULL| jumpif:$i.type:=:diskfolder:DF| jumpif:$i.type:=:server:SERVER| label:INULL| jumpif:$u.AutoMap:=:true:MAP| jump:CONTINUE| label:SERVER| setattr:$v.runmap:true| setattr:$v.serverid:$i.objectid| jumpif:$u.AutoMap:=:true:MAP| jump:CONTINUE| label:DF| setattr:$v.diskgroupid:$i.objectid| setattr:$v.skipdisks:YES| jumpif:$u.AutoMap:=:true:MAP| jump:DONE| label:MAP| jumpif:$s.NewMappingEnabled:=:true:NEWMAP| jumpif:$u.DefaultServer:i=:0:CONTINUE| setattr:$v.runmap:true| setattr:$v.serverid:$u.DefaultServer| jumpif:$v.skipdisks:=:YES:DONE| jump:CONTINUE| label:NEWMAP| jumpif:$u.DefaultServer:=::CONTINUE| jumpif:$u.DefaultServer:=:0:CONTINUE| retrieveobject:$v.defaultServer:MappingServer:objectid:$u.DefaultServer| jumpnull:$v.defaultServer:CONTINUE| setattr:$v.runnewmap:true| jumpif:$v.skipdisks:=:YES:DONE| jump:CONTINUE| label:CONTINUE| domethodsstop:33| jump:DONE| label:DONE| </code> </lib> <lib> <name>setparent</name> <code>jumpnull:$i:X| jumpif:$i.type:!=:volumefolder:X| setattr:$m.parentobjectid:$i.objectid| stop| label:X| jumpif:$v.parentfolder:=::NOPARAM| jumpif:$v.parentfolder:i=:0:NOPARAM| setattr:$m.parentobjectid:$v.parentfolder| stop| label:NOPARAM| stopif:$w.userprivlevel:i=:5| findchild:0:volumesnode:$i| stopnull:$i| vectorgetchildren:$i:$g| loop:$g| jumpif:$g.type:!=:volumefolder:NEXT| setattr:$m.parentobjectid:$g.objectid| stop| label:NEXT| endloop:$g| stop| </code> </lib> <lib> <name>checkduplicate</name> <code>setattrobject:$v.volumetoduplicate:$o| domethodsstop:$m:6| </code> </lib> <lib> <name>selectdisk</name> <code>jumpif:$v.diskgroupid:=:0:MSG1| jumpif:$v.diskgroupid:=:1:MSG2| jumpif:$v.diskgroupid:=:69696969:MSG2| domethodserrorjump:$m:63:ERROR| jump:CONTINUE| label:ERROR| print:Error occurred resetting volume defaults when changing disk folder.| label:CONTINUE| runlib:gotoredundancy| end| label:MSG1| msgbox:You must select a Disk Folder for the volume.:$w.title:E| stop| label:MSG2| msgbox:You must select a folder other than "Unassigned" or "External Devices".:$w.title:E| stop| </code> </lib> <lib> <name>selectPagepool</name> <code>setobjectnull:$y| loop:$h| jumpif:$h.selected:=:false:NEXT| setobject:$h:$y| jump:OUT| label:NEXT| endloop:$h| label:OUT| jumpnull:$y:NOSELECTION| jumpif:$y.status:i!=:1:DOWN| jumpif:$y.xstatus:i!=:1:DOWN| runlib:checkPagepool| stop| label:DOWN| msgbox:Unable to use the selected storage type for volume creation because it is currently down.:$w.title:W| stop| label:NOSELECTION| msgbox:You must select a storage type for this volume.:$w.title:W| stop| </code> </lib> <lib> <name>checkRedundant</name> <code>runlib:getDiskFolder| jumpnull:$z:DFERROR| vectorget:$z.redundantPagepools:$h| runlib:checkPagepools| stop| label:DFERROR| msgbox:Error retrieving disk folder information.:$w.title:E| stop| </code> </lib> <lib> <name>checkNonRedundant</name> <code>runlib:getDiskFolder| jumpnull:$z:DFERROR| vectorget:$z.nonredundantPagepools:$h| runlib:checkPagepools| stop| label:DFERROR| msgbox:Error retrieving disk folder information.:$w.title:E| stop| </code> </lib> <lib> <name>checkDualRedundant</name> <code>runlib:getDiskFolder| jumpnull:$z:DFERROR| vectorget:$z.dualRedundantPagepools:$h| runlib:checkPagepools| stop| label:DFERROR| msgbox:Error retrieving disk folder information.:$w.title:E| stop| </code> </lib> <lib> <name>getDiskFolder</name> <code>newobject:diskfolder:$z| getstop:$z:$v.diskgroupid| jumpif:$v.sourcesecure:=:false:NOSED| jumpif:$z.DARP:i=:4:NOSED| msgbox:WARNING! Destination folder is not Secure Data protected. :$w.title:W| label:NOSED| </code> </lib> <lib> <name>checkPagepools</name> <code>jumpif:$h.count:=:0:ZERO| jumpif:$h.count:=:1:ONE| jumpif:$u.DisallowDataPageSizeChange:=:true:FIND2MB| loop:$h| jumpif:$h.DataPageSize:i=:4096:SELECT| setattr:$h.selected:false| jump:NEXT| label:SELECT| setattr:$h.selected:true| label:NEXT| endloop:$h| goto:selectpagepool| stop| label:FIND2MB| loop:$h| jumpif:$h.DataPageSize:i=:4096:FOUND| endloop:$h| goto:selectpagepool| stop| label:FOUND| setobject:$h:$y| runlib:checkPagepool| stop| label:ZERO| runlib:primeDiskFolder| stop| label:ONE| setobject:$h:$y| runlib:checkPagepool| </code> </lib> <lib> <name>primeDiskFolder</name> <code>jumpif:$w.userprivlevel:i!=:5:NOPRIV| setattr:$p.isPrimed:false| runwiz:PrimeStorage:$z| jumpif:$p.isPrimed:=:true:FOUND| setattr:$v.runningDP:false| runlib:cancelprime| end| label:FOUND| jumpif:$v.diskFailureProtection:i=:0:NONREDUNDANT| jumpif:$v.diskFailureProtection:i=:2:DUALREDUNDANT| runlib:checkRedundant| stop| label:NONREDUNDANT| runlib:checkNonRedundant| stop| label:DUALREDUNDANT| runlib:checkDualRedundant| stop| label:NOPRIV| getmsg:3267:$v.noprivmsg:$m.name| msgbox:$v.noprivmsg:$w.title:W| stop| </code> </lib> <lib> <name>checkPagepool</name> <code>geterrorjump:$y:ERROR| jumpif:$y.status:i!=:1:DOWN| jumpif:$y.xstatus:i!=:1:DOWN| setattr:$m.PagePoolIndex:$y.objectid| domethodserrorjump:$m:66:DEFAULTSERROR| jump:CONTINUE| label:DEFAULTSERROR| print:Error occurred resetting volume defaults when changing disk folder or storage type.| label:CONTINUE| runlib:createVolume| stop| label:DOWN| setattr:$v.runningDP:false| goto:pagepooldown| stop| label:ERROR| msgbox:Unable to retrieve storage type information. Storage type may no longer be available.:$w.title:E| stop| </code> </lib> <lib> <name>createVolume</name> <code>setattr:$p.diskFailureProtection:$v.diskFailureProtection| runlib:createVolumeDP| </code> </lib> <lib> <name>afterCreateVolumeDP</name> <code>setattrobject:$v.importTemplate:$m.snapshotprofile| runlib:checkPagepool2| </code> </lib> <lib> <name>checkPagepool2</name> <code>geterrorjump:$y:ERROR| jumpif:$y.status:i!=:1:DOWN| jumpif:$y.xstatus:i!=:1:DOWN| setattr:$v.runningDP:false| runlib:save| stop| label:DOWN| setattr:$v.runningDP:false| goto:pagepooldown2| stop| label:ERROR| msgbox:Unable to retrieve storage type information. Storage type may no longer be available.:$w.title:E| stop| </code> </lib> <lib> <name>cancelprime</name> <code>jumpif:$u.diskgroupidprompt:=:true:CHECKSKIPDISKS| jump:CHECKREDUNDANCY| label:CHECKSKIPDISKS| jumpif:$v.skipdisks:!=:YES:GOTODF| jump:CHECKREDUNDANCY| label:CHECKREDUNDANCY| jumpif:$u.redundantonly:=:false:GOTODF| return| label:GOTODF| goto:diskfolder| </code> </lib> <lib> <name>fixstoragelabels</name> <code>setattr:$v.pageclassmode:0| jumpif:$u.DPPrompt:=:false:NODP| runlib:fixdplabels| stop| label:NODP| setattr:$v.storageLabel1:| setattr:$v.storageValue1:| setattr:$v.storageLabel2:| setattr:$v.storageValue2:| stop| </code> </lib> <lib> <name>fixnodplabels</name> <code>setattr:$v.storageLabel1:$v.labelValue3| setattr:$v.storageValue1:$m.StorageTierDisplay| jumpif:$m.DiskFailureProtection:i=:1:REDUNDANT| setattr:$v.storageLabel2:| setattr:$v.storageValue2:| stop| label:REDUNDANT| setattr:$v.storageLabel2:$v.labelValue2| setattr:$v.storageValue2:$m.RaidTypesDisplay| </code> </lib> <lib> <name>fixdplabels</name> <code>setattr:$v.storageLabel1:$v.labelValue1| setattr:$v.storageValue1:$m.DPTemplateName| setattr:$v.storageLabel2:| setattr:$v.storageValue2:| </code> </lib> <lib> <name>fixcompressionlabels</name> <code>jumpif:$m.CompressionSupported:=:true:COMPRESSIONSUPPORTED| setattr:$v.compressionLabel:| setattr:$v.compressionValue:| stop| label:COMPRESSIONSUPPORTED| setattr:$v.compressionLabel:$v.compressionLabelString| jumpif:$v.dataoptimization:=:true:COMPRESSION| setattr:$v.compressionValue:No| stop| label:COMPRESSION| setattr:$v.compressionValue:Yes| </code> </lib> <lib> <name>save</name> <code>domethodsstop:71| //CMD_DISABLE_SSD_WRITE_CACHE| domethodsstop:84| cmdlistnew| cmdlistaddset:$m| cmdlistadddomethods:$m:69| setattr:$w.intervalsToWait:6000| concat:Create Volume~:$m.name:$v.processname| cmdlistrun:$v.processname| concat:Creating Volume ":$m.name:$w.asyncwaitmsg| concat:$w.asyncwaitmsg:".:$w.asyncwaitmsg| goto:bpwait| stop| </code> </lib> <lib> <name>postsave</name> <text>Refreshing Volume Information</text> <backcode>cmdlistretrieveobject:$m:volume| clearversion:History| clearversion:PITCVolumeRuleGroup| jumpnull:$m:SKIP| domethodsstop:$m:52| label:SKIP| refreshlist:com.compellent.scheduleviewer.MultiScheduleViewer| refreshnode:storagenode| </backcode> <code>jumpnull:$m:FOCUSI| jumpif:$m.objectid:i!=:0:CONTINUE| //msgbox:Could not find the created Volume.^^Click Refresh to confirm volume creation^has complete successfully.:$w.title:E| jump:FOCUSI| end| label:CONTINUE| jumpif:$v.dataoptimization:=:false:CONTINUE2| cmdlistnew| cmdlistadddomethods:$m:86| cmdlistrun| label:CONTINUE2| setlastref:$m| focusexplorer:$m| jumpif:$v.fromcmm:=:true:DUPLICATE| jumpif:$v.runnewmap:=:true:NEWMAP| jumpif:$v.runmap:=:true:MAP| jumpif:$v.skiplinker:=:YES:FROMLINKER| concat:Volume~:$m.name:$v.linkmsg| concat:$v.linkmsg:~has been created.:$v.linkmsg| jumpif:$v.fromlinker:=:YES:FROMLINKER| setattr:$p.DisplayMsg:$v.linkmsg| stopif:$v.linkerran:=:true| setattr:$v.linkerran:true| runwiz:Linker:$m:$o| return:$o| label:FROMLINKER| return:$m:$v.linkmsg| label:DUPLICATE| return:$m| label:MAP| newobject:wizvar:$p| setattr:$p.serverid:$v.serverid| stopif:$v.mapran:=:true| setattr:$v.mapran:true| runwiz:Map:$m| return| label:NEWMAP| newobject:wizvar:$p| setattrobject:$p.MapServer:$v.defaultServer| setattr:$p.SkipMapFinish:true| stopif:$v.mapran:=:true| setattr:$v.mapran:true| runwiz:CreateMapProfile:$m| return| stop| label:FOCUSI| jumpnull:$i:NULL| focusexplorer:$i| label:NULL| return| </code> </lib> <lib> <name>createVolumeDP</name> <code>runlib:checkdplicense| runlib:makecachewarnings| clearversion:PagePool| domethodsstop:91| jumpif:$v.canbecompressed:!=:true:SKIP2| goto:sizeopt| stop| label:SKIP2| goto:size| stop| </code> </lib> <lib> <name>checkdplicense</name> <code>setattr:$v.pageclassmode:0| stop| </code> </lib> <lib> <name>checkprogression</name> <code>domethodsstop:24| jumpif:$m.WritableClassMask:=:0x0:NEEDWRIT| jumpif:$m.HistoricalClassMask:=:0x0:NEEDHIST| stop| label:NEEDWRIT| msgbox:You must select at least one class of storage for writable data.:$w.title:E| end| label:NEEDHIST| msgbox:You must select at least one class of storage for replay data.:$w.title:E| end| </code> </lib> <lib> <name>makecachewarnings</name> <code>setattr:$v.SystemReadCacheWarning:| setattr:$v.SystemWriteCacheWarning:| getattrobject:$s.cache:$o| stopnull:$o| jumpif:$o.RCacheEnable:i=:2:RNOTENABLED| jumpif:$o.RCacheStatus:i=:2:RDOWN| jump:WRITE| label:RNOTENABLED| setattr:$v.SystemReadCacheWarning:WARNING - System read cache is not enabled.| jump:WRITE| label:RDOWN| setattr:$v.SystemReadCacheWarning:WARNING - System read cache is down.| label:WRITE| jumpif:$o.WCacheEnable:i=:2:WNOTENABLED| jumpif:$o.WCacheStatus:i=:2:WDOWN| stop| label:WNOTENABLED| setattr:$v.SystemWriteCacheWarning:WARNING - System write cache is not enabled.| stop| label:WDOWN| setattr:$v.SystemWriteCacheWarning:WARNING - System write cache is down.| stop| </code> </lib> <lib> <name>makevolumefolder</name> <code>newobject:wizvar:$p| setattr:$p.skipintro:YES| runwiz:CreateVolumeFolder::$o| stopnull:$o| stopif:$o.type:!=:volumefolder| refreshdata| setattr:$m.parentobjectid:$o.objectid| redraw| </code> </lib> <lib> <name>selectallcache</name> <code>setattr:$m.RCacheRAStatus:1| setattr:$m.RCacheStatus:1| setattr:$m.cachestatus:1| refresh| </code> </lib> <lib> <name>unselectallcache</name> <code>setattr:$m.RCacheRAStatus:2| setattr:$m.RCacheWStatus:2| setattr:$m.RCacheStatus:2| setattr:$m.cachestatus:2| refresh| </code> </lib> <lib> <name>changesystemcache</name> <code>runwiz:ConfigureSystemCache| runlib:makecachewarnings| goto:advancedoptions| stop| </code> </lib> <lib> <name>makereplaytemplate</name> <code>runwiz:CreateReplayTemplate::$z| clearversion:PITCRule| clearversion:PITCRuleGroup| retrievetable:PITCRuleGroup:$g| vectorset:$g:$v.ReplayTemplateVector| gnew| gadd:$z| vectorset:$g:$v.SelectedTemplatesVector| clearcache| redraw| </code> </lib> </instructions> </xml>在这里面的方法
07-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值