繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> Java技巧及代码 >> Use Java to implement the UBB future.

Use Java to implement the UBB future.

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:13  文字大小:【】【】【
简介:UBB & JAVA     ----Use Java to implement the UBB future. [Author] pizer.chen -- iceant -- 陈鹏 [email ] iceant@21cn.com [icq   ] 77777369 These days,I write so...

UBB & JAVA

----Use Java to implement the UBB future.

[Author] pizer.chen -- iceant -- 陈鹏

[email ] iceant@21cn.com

[icq ] 77777369

These days,I write some publish system,just like BBS/news etc.

The client asked me ,whether they can insert the image and href url to the plain text when they published them.

so i write this.

I use xml file for dynamic UBB extends.

U can make the UBB rule of yourself.

The only thing that u need to do is modify the UBB.xml config file.

Best Regards

===============

pizer.chen/2001-9-4

===========================

Resource Link

===========================

It is based on xml & RegularExpressions tech.

about xml & regularExpression u can find them here:

http://www.w3.org/XML/

http://xml.apache.org

http://www.meurrens.org/ip-Links/java/regex/navi.html

http://www.savarese.org/oro/

http://jakarta.apache.org/oro

about ubb u can find them here:

http://www.ubbdesign.com

========================

it used :

jakarta-regexp-1.2 (download form http://jakarta.apache.org)

dom4j-0.6(over 0.6 version) (download form http://sourceforge.net)

jdk(over 1.2 version) (download form http://java.sun.com)

==========================

UBB.XML

it must be stored in CLASSPATH

==========================

the regularExpression & replace string map file.

$2"/>

=========================

UBB.java

=========================

/*

* UBB.java

*

* Created on 2001年9月3日, 下午4:01

*/

package com.wacos.util.ubb;

import org.dom4j.*;

import org.dom4j.io.*;

import java.io.*;

import java.util.*;

import org.apache.regexp.*;

/**

*

* @author Pizer.chen -- iceant -- 陈鹏

* @version 0.1

*/

public class UBB {

private static final String XML_CONFIG_FILE = "UBB.xml";

private static org.dom4j.Document doc = null;

/** Creates new UBB */

public UBB() {

}

public static String parse(String inStr){

try{

List list = getUBBCodeList();

String ubbCode="";

String mapStr="";

Attribute attribute=null;

for (Iterator iter = list.iterator(); iter.hasNext(); ) {

attribute = (Attribute) iter.next();

ubbCode = attribute.getValue();

mapStr= getMapValue(ubbCode);

inStr=REReplace.replace(ubbCode,mapStr,inStr);

}

return inStr;

}catch(Exception err){

System.out.println(err);

return err.toString();

}

}

/**

* parse the xml file to Document object

**/

private static Document xml2Document(){

try{

InputStream is = Thread.currentThread().getContextClassLoader()

.getResourceAsStream(XML_CONFIG_FILE);

SAXReader reader = new SAXReader();

Document document = reader.read(is);

return document;

}catch(Exception err){

System.out.println(err);

return null;

}

}

/**

* use xpath to get the map-to value of the ubb-code.

**/

private static String getMapValue(String ubbCode){

try{

if(doc==null){

doc=xml2Document();

}

Node node = doc.selectSingleNode("//map[@ubb-code='"+ubbCode+"']");

return node.valueOf( "@map-to" );

}catch(Exception err){

System.out.println(err);

return err.toString();

}

}

/**

* get the ubb-code List

**/

private static List getUBBCodeList(){

try{

if(doc==null){

doc=xml2Document();

}

return doc.selectNodes( "//map/@ubb-code" );

}catch(Exception err){

System.out.println(err);

return null;

}

}

/**

* get the map-to List

**/

private static List getUBBMapList(){

try {

if(doc==null){

doc=xml2Document();

}

return doc.selectNodes("//map//@map-to");

}

catch (Exception e) {

System.out.println(e);

return null;

}

}

}

========================

REReplace.java

========================

package com.wacos.util.ubb;

import java.io.*;

import java.util.*;

import org.apache.regexp.*;

public class REReplace

{

/**

* replace the inStr with pattern1 & pattern2

**/

public static String replace(String pattern1,String pattern2,String inStr){

try {

RE re = new RE(pattern1);

int point=0;

while(re.match(inStr)){

RE re2 = new RE("\\$([0-9])");

while(re2.match(pattern2)){

point = Integer.parseInt(re2.getParen(1));

pattern2=re2.subst(pattern2,re.getParen(point),RE.REPLACE_FIRSTONLY);

}

inStr = re.subst(inStr,pattern2);

}

return inStr;

}

catch (Exception e) {

System.out.println(e);

return e.toString();

}

}

}

=============================

UBBTest

=============================

package com.wacos.util.ubb;

public class UBBTest

{

public static void main(String[] args)

{

try{

String test ="atestH1 Font\r\n [url href=http://www.21cn.com]测试hehe..";

System.out.println(UBB.parse(test));

}catch(Exception err){

System.out.println(err);

}

}

}

责任编辑:admin
相关文章