建造父目录节点以及数的像关操作
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; }
}
|