?
?
? 建造父目錄節點以及數的像關操作
public
?
class
?ResultFolder?
extends
?ResultItem
{
 ??
/**?*/
/**
???*?字對象向量
???
*/
??
private
?Vector?vtItems?
=
?
new
?Vector();
 ??
/**?*/
/**
???*?構造函數
???*?
@param
?sName?參數名稱
???
*/
??
public
?ResultFolder(String?sName)?
{
????
super
(sName);
??}
??
/**?*/
/**
???*?設置內容
???*?
@param
?newValue?內容
???
*/
??
public
?
void
?setValue(String?newValue)?
{
????
//
?Can't?set?value?to?a?ResultFolder
????
//
System.out.println("Can't?set?value?to?a?ResultFolder");
??}
??
/**?*/
/**
???*?獲取內容
???*?
@return
?內容
???
*/
??
public
?String?getValue()?
{
????
//
?Can't?get?value?of?a?ResultFolder"
????
//
System.out.println("Can't?get?value?of?a?ResultFolder");
????
return
?
""
;
??}
??
/**?*/
/**
???*?增加數據子項
???*?
@param
?item?子項
???
*/
??
public
?
void
?appendChild(ResultItem?item)?
{
????vtItems.addElement(item);
????item.setParent(
this
);
??}
??
/**?*/
/**
???*?從結果樹中移去一個節點,不進行進行遍歷查找
???*?
@param
?item?節點
???*?
@return
?true-成功,flase-失敗
???
*/
??
public
?
boolean
?removeChild(ResultItem?item)?
{
????
return
?removeChild(item,?
false
);
??}
??
/**?*/
/**
???*?從結果樹中移去一個節點,進行遞歸查找
???*?
@param
?item??節點
???*?
@param
?bRecursive??true-遞歸查找,?false-不作遞歸查找
???*?
@return
?true-成功,?false-失敗
???
*/
??
public
?
boolean
?removeChild(ResultItem?item,?
boolean
?bRecursive)?
{
 ????
if
(
!
vtItems.removeElement(item)?
&&
?bRecursive)?
{
 ??????
for
(
int
?i
=
0
;?i
<
vtItems.size();?i
++
)?
{
????????Object?o?
=
?vtItems.elementAt(i);
 ????????
if
(?o?
instanceof
?ResultFolder)?
{
??????????(?(ResultFolder)?o).removeChild(item,?
true
);
????????}
??????}
????}
????
return
?
false
;
??}
??
/**?*/
/**
???*?遞歸查找具有指定值的ResultItem
???*?
@param
?sKey?名稱
???*?
@param
?bRecursive?是否遞歸查找
???*?
@return
?節點
???
*/
??
public
?ResultItem?findSingleItem(String?sKey,?
boolean
?bRecursive)?
{
????ResultItem?item?
=
?
null
;
 ????
for
(
int
?i
=
0
;?i
<
vtItems.size();?i
++
)?
{
??????item?
=
?(ResultItem)vtItems.elementAt(i);
 ??????
if
(item.getName().equalsIgnoreCase(sKey))?
{
????????
return
?item;
??????}
??????
else
?
if
(bRecursive?
&&
?item?
instanceof
?ResultFolder)?
{
????????ResultItem?subItem?
=
?((ResultFolder)item).findSingleItem(sKey,?
true
);
 ????????
if
(subItem?
!=
?
null
)?
{
??????????
return
?subItem;
????????}
??????}
????}
????
return
?
null
;
??}
??
/**?*/
/**
???*?遞歸查找具有指定值的ResultItem的值
???*?
@param
?sKey?名稱
???*?
@param
?bRecursive?是否遞歸查找
???*?
@return
?節點的值
???
*/
??
public
?String?findSingleValue(String?sKey,?
boolean
?bRecursive)?
{
????ResultItem?item?
=
?findSingleItem(sKey,?bRecursive);
 ????
if
(item?
!=
?
null
)?
{
??????
return
?item.getValue();
????}
????
return
?
null
;
??}
??
/**?*/
/**
???*?非遞歸查找具有指定值的ResultItem的值
???*?
@param
?sKey?節點名稱
???*?
@return
?節點值
???
*/
??
public
?String?findSingleValue(String?sKey)?
{
????
return
?findSingleValue(sKey,?
false
);
??}
??
/**?*/
/**
???*?找到關鍵字為特定值的Item列表
???*?
@param
?sKey?節點名稱
???*?
@return
??Item向量
???
*/
??
public
?Vector?findItems(String?sKey)?
{
????Vector?vt?
=
?
new
?Vector();
 ????
for
(
int
?i
=
0
;?i
<
vtItems.size();?i
++
)?
{
??????ResultItem?item?
=
?(ResultItem)vtItems.elementAt(i);
 ??????
if
(item.getName().equalsIgnoreCase(sKey))?
{
????????vt.addElement(item);
??????}
????}
????
return
?vt;
??}
??
/**?*/
/**
???*?找到關鍵字為特定值的Item
???*?
@param
?sKey?節點名稱
???*?
@return
??Item
???
*/
??
public
?ResultItem?findSingleItem(String?sKey)?
{
 ????
for
(
int
?i
=
0
;?i
<
vtItems.size();?i
++
)?
{
??????ResultItem?item?
=
?(ResultItem)vtItems.elementAt(i);
 ??????
if
(item.getName().equalsIgnoreCase(sKey))?
{
????????
return
?item;
??????}
????}
????
return
?
null
;
??}
??
/**?*/
/**
???*?追加子節點
???*?
@param
?key?子節點名稱
???*?
@param
?value?子節點值
???*?
@return
?子節點
???
*/
??
public
?ResultItem?appendChild(String?key,?String?value)?
{
????ResultItem?item?
=
?
new
?ResultItem(key);
????item.setValue(value);
????
this
.appendChild(item);
????
return
?item;
??}
??
/**?*/
/**
???*?追加子目錄
???*?
@param
?key?名稱
???*?
@return
?子目錄
???
*/
??
public
?ResultFolder?appendChildFolder(String?key)?
{
????ResultFolder?folder?
=
?
new
?ResultFolder(key);
????
this
.appendChild(folder);
????
return
?folder;
??}
??
/**?*/
/**
???*?獲取子項向量
???*?
@return
?子項向量
???
*/
??
public
?Vector?getChildItems()?
{
????
return
?vtItems;
??}
??
/**?*/
/**
???*?非遞歸方式判斷是否含有指定子項
???*?
@param
?aValue?子項名稱
???*?
@return
?true-是,?false-否
???
*/
??
public
?
boolean
?hasValue(String?aValue)?
{
????
return
?hasValue(aValue,?
false
);
??}
??
/**?*/
/**
???*?判斷是否含有指定子項
???*?
@param
?aValue?子項名稱
???*?
@param
?bRecursive?是否以遞歸方式
???*?
@return
?true-是,?false-否
???
*/
??
public
?
boolean
?hasValue(String?aValue,?
boolean
?bRecursive)?
{
 ????
for
(
int
?i
=
0
;?i
<
vtItems.size();?i
++
)?
{
??????ResultItem?item?
=
?(ResultItem)vtItems.elementAt(i);
 ??????
if
(item.getValue().equals(aValue))?
{
????????
return
?
true
;
??????}
??????
else
?
if
(bRecursive?
&&
?(item?
instanceof
?ResultFolder))?
{
????????
boolean
?bOK?
=
?((ResultFolder)item).hasValue(aValue,?
true
);
????????
if
(bOK)
??????????
return
?
true
;
??????}
????}
????
return
?
false
;
??}
??
/**?*/
/**
???*?獲取Html安全代碼
???*?
@param
?key?原代碼
???*?
@return
?Html安全代碼
???
*/
??
public
?String?getValueByHtml(String?key)?
{
????
return
?htmlEscape(findSingleValue(key));
??}
??
/**?*/
/**
???*?Html安全代碼轉換程序
???*?
@param
?xml?原代碼
???*?
@return
?Html安全代碼
???
*/
??
public
?
static
?String?htmlEscape(String?xml)?
{
????
if
?(xml?
==
?
null
)?
return
?
null
;
????String?ret?
=
?xml;
????StringBuffer?sb?
=
?
new
?StringBuffer();
????
//
?do?&?first
????
int
?p,?q;
 ????
for
(q?
=
?ret.indexOf(
"
&
"
),?p?
=
?
0
;?q?
>=
?
0
;?p?
=
?
++
q,?q?
=
?ret.indexOf(
"
&
"
,?p))?
{
??????sb.append(ret.substring(p,?q));
??????sb.append(
"
&
"
);
????}
????sb.append(ret.substring(p));
????ret?
=
?sb.toString();
????sb?
=
?
new
?StringBuffer();
????
//
?do?<
????
for
(q?
=
?ret.indexOf(
"
<
"
),?p?
=
?
0
;?q?
>=
?
0
;?p?
=
?
++
q,?q?
=
?ret.indexOf(
"
<
"
,?p))?
{
??????sb.append(ret.substring(p,?q));
??????sb.append(
"
<
"
);
????}
????sb.append(ret.substring(p));
????ret?
=
?sb.toString();
????sb?
=
?
new
?StringBuffer();
????
//
?do?>
????
for
(q?
=
?ret.indexOf(
"
>
"
),?p?
=
?
0
;?q?
>=
?
0
;?p?
=
?
++
q,?q?
=
?ret.indexOf(
"
>
"
,?p))?
{
??????sb.append(ret.substring(p,?q));
??????sb.append(
"
>
"
);
????}
????sb.append(ret.substring(p));
????ret?
=
?sb.toString();
????sb?
=
?
new
?StringBuffer();
????
//
?do?return
????
for
(q?
=
?ret.indexOf(
"
\n
"
),?p?
=
?
0
;?q?
>=
?
0
;?p?
=
?
++
q,?q?
=
?ret.indexOf(
"
\n
"
,?p))?
{
??????sb.append(ret.substring(p,?q));
??????sb.append(
"
<br>
"
);
????}
????sb.append(ret.substring(p));
????ret?
=
?sb.toString();
????
return
?ret;
??}
}
|
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 |
|
導航
統計
- 隨筆: 32
- 文章: 427
- 評論: 144
- 引用: 0
常用鏈接
留言簿(5)
隨筆檔案
文章分類
文章檔案
java
工具
朋友
搜索
積分與排名
最新評論

閱讀排行榜
評論排行榜
|
|