由於春節和項目上線的緣由,離寫上一篇文章的時間已經很久了。 不知道是事情太多了,仍是自已效率過低了。總之是時間不夠用。 哎,苦逼的程序員。但願我寫的東西能幫你們節省時間。
若是,你沒看過這個系列的第一篇文章,請先去看一下這篇文章,不然你指定看不懂這篇。
XML代碼生成器——XMLFACTORY 簡介(一)
上篇文章利用RSS格式的XML,簡介了一下如何利用XmlFactory生成實體類與XML序列化和反序列化代碼。可是蜻蜓點水,五個功能頁籤的操做幾乎都是直接點擊「Next」直到生成代碼,沒有詳細解釋每一個籤頁的做用。接下來的幾篇文章,將分別講解每個頁籤的全部配置項。
這一篇講「元素/子值」頁籤 的配置功能,您將瞭解到:如何調整Xml元素的結構,以及對生成實體類的影響。
1、子值列表中「多個」列的做用
先上樣本XML:
太簡單了,HTML裏的Select對象。
老樣子,打開這個地址http://www.codingfactory.net/Page/XmlFactory/client/XmlFactory_Flex.html
把上面的XML粘到樣本XML中,點NEXT;顯示以下圖
左側列表顯示全部元素;右側列表顯示該元素所包函的全部子值。未來生成代碼時,左側的元素都將映射爲實體類(若是沒有脫殼的話,這個之後講);而右側的子值,將應射爲類屬性。
在這個Xml中,元素<Select>包函兩個子值:屬性id 和 元素<option>。
很明顯在實際狀況中,一個<Select>應該會包函多個<option>,故應映射爲這樣的實體類:
那麼代碼生成器如何肯定,一個子值是否映射爲複數形式的類屬性呢?
正是經過「子值列表」中的「多個」列來指定,若是該列的複選框選中則子值應映爲複數形式;不然映射爲單數形式。
好比本例:
還有幾個問題要明確一下:
1.子值id那一行「多個」列爲何沒有複選框可選呢?
答:id是屬性類型的子值(Attribute),它不可能存在多個值。因此映射爲類屬性時,也只有單數形式。
2. 子值類型有幾種?
答:3種,Element,Attribute,Value三種,你能夠在「子值列表」的「類型」列看到子值的類型。
2、編輯配置每一個XML元素的結構
有時候樣本XML中,缺乏咱們須要的子值。好比本例中的元素<Select>在實際應用中通常會包函name屬性。咱們有兩種方法解決這個問題。第一個方法是補全樣本XML,再用代碼生成器,從新分析;另外一個方法比較直觀,直接使用「添加子值」功能。
操做:
1.先在左側列表選中Select項,而後點擊「添加子值」按鈕。這表示你要爲<Select>元素添加子值。
2.在彈出的對話框中「子值類型」選「Attribute」;「元素名稱」填「name」。如圖
特別說明一下,若是咱們向元素填加一個新的「Element」類型的子值。好比:向<option>中填加一個<span>,操做完成後,左側列表會自動增長span一項;但若是這時直接點「Next」系統會提示錯誤(以下圖)。這是由於:新添加的元素<span>中不包函任何子值,而代碼生成器不容許空子值元素映射爲類(你也不會定義沒有任何屬性的實體類,對麼?)因此,咱們須要選中該項(span),再經過「添加子值」功能爲其添加子值。
對於多餘的,你認爲不必映射爲類的Xml元素,能夠用「刪除元素」功能進行刪除。刪除後,全部元素將再也不包含該類型的子值,之後生成代碼時,就不會爲這個元素生成對應的實體類。
而「刪除子值」的功能是,刪除某個元素的子值,未來生成代碼時,仍然爲這個元素生成對應的實體類,但你刪除的子值不會再映射爲類的屬性。
如下是本文示例所生成的代碼:
http://www.codingfactory.net/Page/XmlFactory/OutPut/XmlCSharp.aspx?id=9151 需說明的是,做者還在「類屬性」頁籤做了變動類屬性名稱的操做,才造成上面代碼的樣子。具體操做,本文暫不展開。後續文章中將專門講解。
若是,你沒看過這個系列的第一篇文章,請先去看一下這篇文章,不然你指定看不懂這篇。
XML代碼生成器——XMLFACTORY 簡介(一)
上篇文章利用RSS格式的XML,簡介了一下如何利用XmlFactory生成實體類與XML序列化和反序列化代碼。可是蜻蜓點水,五個功能頁籤的操做幾乎都是直接點擊「Next」直到生成代碼,沒有詳細解釋每一個籤頁的做用。接下來的幾篇文章,將分別講解每個頁籤的全部配置項。
這一篇講「元素/子值」頁籤 的配置功能,您將瞭解到:如何調整Xml元素的結構,以及對生成實體類的影響。
1、子值列表中「多個」列的做用
先上樣本XML:
<select
id="select1">
<option value="1">abc</option>
</select>
<option value="1">abc</option>
</select>
太簡單了,HTML裏的Select對象。
老樣子,打開這個地址http://www.codingfactory.net/Page/XmlFactory/client/XmlFactory_Flex.html
把上面的XML粘到樣本XML中,點NEXT;顯示以下圖
左側列表顯示全部元素;右側列表顯示該元素所包函的全部子值。未來生成代碼時,左側的元素都將映射爲實體類(若是沒有脫殼的話,這個之後講);而右側的子值,將應射爲類屬性。
在這個Xml中,元素<Select>包函兩個子值:屬性id 和 元素<option>。
很明顯在實際狀況中,一個<Select>應該會包函多個<option>,故應映射爲這樣的實體類:
public class Select
{
public String Id{ get; set; }
public List<Option> Option{ get; set; }
}
{
public String Id{ get; set; }
public List<Option> Option{ get; set; }
}
正是經過「子值列表」中的「多個」列來指定,若是該列的複選框選中則子值應映爲複數形式;不然映射爲單數形式。
好比本例:
是否選中"多個"列 | 生成的實體類 |
---|---|
選中 |
public class Select
{ public String Id{ get; set; } public List<Option> Option{ get; set; } } |
未選中 |
public class Select
{ public String Id{ get; set; } public Option Option{ get; set; } } |
還有幾個問題要明確一下:
1.子值id那一行「多個」列爲何沒有複選框可選呢?
答:id是屬性類型的子值(Attribute),它不可能存在多個值。因此映射爲類屬性時,也只有單數形式。
2. 子值類型有幾種?
答:3種,Element,Attribute,Value三種,你能夠在「子值列表」的「類型」列看到子值的類型。
子值類型 | 示例 | 說明 | 是否能夠 映射爲複數形式的類屬性 |
---|---|---|---|
Element | <div><p>1234</p></div> | 元素<p>是元素<div>的元素型子值 | 能夠 |
Attribute | <div id="div1"/> | id是元素<div>的屬性類子值 | 不能夠 |
Value | <p>123</p> | 文本「1234」是元素<p>的Value類型的子值 | 不能夠 |
2、編輯配置每一個XML元素的結構
有時候樣本XML中,缺乏咱們須要的子值。好比本例中的元素<Select>在實際應用中通常會包函name屬性。咱們有兩種方法解決這個問題。第一個方法是補全樣本XML,再用代碼生成器,從新分析;另外一個方法比較直觀,直接使用「添加子值」功能。
操做:
1.先在左側列表選中Select項,而後點擊「添加子值」按鈕。這表示你要爲<Select>元素添加子值。
2.在彈出的對話框中「子值類型」選「Attribute」;「元素名稱」填「name」。如圖
特別說明一下,若是咱們向元素填加一個新的「Element」類型的子值。好比:向<option>中填加一個<span>,操做完成後,左側列表會自動增長span一項;但若是這時直接點「Next」系統會提示錯誤(以下圖)。這是由於:新添加的元素<span>中不包函任何子值,而代碼生成器不容許空子值元素映射爲類(你也不會定義沒有任何屬性的實體類,對麼?)因此,咱們須要選中該項(span),再經過「添加子值」功能爲其添加子值。
對於多餘的,你認爲不必映射爲類的Xml元素,能夠用「刪除元素」功能進行刪除。刪除後,全部元素將再也不包含該類型的子值,之後生成代碼時,就不會爲這個元素生成對應的實體類。
而「刪除子值」的功能是,刪除某個元素的子值,未來生成代碼時,仍然爲這個元素生成對應的實體類,但你刪除的子值不會再映射爲類的屬性。
如下是本文示例所生成的代碼:
http://www.codingfactory.net/Page/XmlFactory/OutPut/XmlCSharp.aspx?id=9151 需說明的是,做者還在「類屬性」頁籤做了變動類屬性名稱的操做,才造成上面代碼的樣子。具體操做,本文暫不展開。後續文章中將專門講解。