|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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. <!--============================--> <?xml version="1.0" encoding="UTF-8"?> <UBB-map> <map ubb-code="/[b/](.+?)/[//b/]" map-to="<b>$1</b>"/> <!--<b>$1</b>--> <map ubb-code="/[i/](.+?)/[//i/]" map-to="<i>$1</i>"/> <!--<i>$1</i>--> <map ubb-code="/[h1/](.+?)/[//h1/]" map-to="<h1>$1</h1>"/> <!--<h1>$1</h1>--> <map ubb-code="/(.+?)/[//url/]" map-to="<a href="$1" target="_blank">$2</a>"/> <!--<a href="$1" target="_blank">$2</a>--> <!--...--> </UBB-map> ========================= 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 <map ubb-code="..." map-to=".."> 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 ubb-code="..." map-to=".."> 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 ="atest H1 Font/r/n [url href=http://www.21cn.com]测试hehe..";System.out.println(UBB.parse(test)); }catch(Exception err){ System.out.println(err); } } } 返回类别: 教程 上一教程: whois in jsp (我在网上找的,充实一下这里) 下一教程: 实现可自定义的搜索功能 您可以阅读与"Use Java to implement the UBB future."相关的教程: · in Software that use java, Show popmenu that have the function of cut copy past to · JNDI简介,jndi在tomcat中的配置,jdbc api简介,java连接数据库服务 · About UBB with java has a bug. · The Struts Users Guide 翻译作品1 · [Eclipse笔记]作为Java IDE的Eclipse有多流行?看看今年TheServerSide的Java研讨会上做的一个调查。 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |