您的位置:首页 > Web前端 > HTML

替换xml/html中的属性值 参考的

2016-07-11 17:36 369 查看
package com.sf.util.test.other;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ZYJ {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//      String htmlStr = "<b><font www=\"red\" pp='oo'>aaaaa</font><font www=\"red\" pp='oo'>aaaaa</font></b> ";
String htmlStr = "<b><a href='http://www.baby.com' pp='oo'></a><a href =\"http://www.baby.com\" pp=\"o\">welcome</a></b> ";
System.out.println("zyj  "+ZYJ.updateHtmlTag(htmlStr, "a", "href","ljc" , "123\"","I Win"));

}

/**
* @param htmlStr  html文本
* @param searchTag  要修改的目标标签
* @param searchAttrib  目标标签中的属性
* @param newStr  修改值
*/
public static String updateHtmlTag(String htmlStr, String searchTag,
String searchAttrib,String startStr , String endStr,String newContent) {
String regxpForTag ="<\\s*" + searchTag + "\\s+([^>]*)\\s*>";
String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']http://([^\"|']+)[\"|']";//"=[\"|']([^[\"|']]+)[\"|']";
Pattern patternForTag = Pattern.compile(regxpForTag);
Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
Matcher matcherForTag = patternForTag.matcher(htmlStr);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer("<"+searchTag +" ");
System.out.println(matcherForTag.group(1));
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag
.group(1));

if (matcherForAttrib.find()) {
System.out.println("ll"+matcherForAttrib.group(1));
//                matcherForAttrib.appendReplacement(sbreplace, searchAttrib+"=\"" +startStr
//                        + matcherForAttrib.group(1) + endStr);
matcherForAttrib.appendReplacement(sbreplace, searchAttrib+"=\"" +newContent + "\"");
}
//            matcherForTag.appendReplacement(sb, sbreplace.toString());
matcherForAttrib.appendTail(sbreplace);
matcherForTag.appendReplacement(sb, sbreplace.toString()+">");
result = matcherForTag.find();
}
matcherForTag.appendTail(sb);
return sb.toString();
}

public   static String replaceHtmlTag(String str, String beforeTag,

String tagAttrib, String startTag, String endTag) {

//  String regxpForTag = "<//s*" + beforeTag + "//s+([^>]*)//s*>" ;

String regxpForTag = "<//s*" + beforeTag + "//s+([^>]*)//s*";

// String regxpForTagAttrib = tagAttrib + "=//s*/"([^/"]+)/""  ;
String regxpForTagAttrib = tagAttrib + "=//s*\"([^\"]+)\""  ;

//Pattern.CASE_INSENSITIVE 忽略大小写

Pattern patternForTag = Pattern.compile (regxpForTag,Pattern. CASE_INSENSITIVE );

Pattern patternForAttrib = Pattern.compile (regxpForTagAttrib,Pattern. CASE_INSENSITIVE );

Matcher matcherForTag = patternForTag.matcher(str);

StringBuffer sb = new StringBuffer ();

boolean result = matcherForTag.find();

// 循环找出每个 img 标签

while (result) {

StringBuffer sbreplace = new StringBuffer( "<img " );

Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag

.group(1));

if (matcherForAttrib.find()) {

matcherForAttrib.appendReplacement(sbreplace, startTag

+ matcherForAttrib.group(1) + endTag);

}

matcherForAttrib.appendTail(sbreplace);

matcherForTag.appendReplacement(sb, sbreplace.toString());

result = matcherForTag.find();

}

matcherForTag.appendTail(sb);

return sb.toString();

}
}

/**

*

* 基本功能:替换指定的标签

* @author linshutao

* @param str

* @param beforeTag   要替换的标签

* @param tagAttrib   要替换的标签属性值

* @param startTag    新标签开始标记

* @param endTag   新标签结束标记

* @return String

*/

public   static String replaceHtmlTag(String str, String beforeTag,

String tagAttrib, String startTag, String endTag) {

//  String regxpForTag = "<//s*" + beforeTag + "//s+([^>]*)//s*>" ;

String regxpForTag = "<//s*" + beforeTag + "//s+([^>]*)//s*" ;

String regxpForTagAttrib = tagAttrib + "=//s*/"([^/"]+)/"" ;

//Pattern.CASE_INSENSITIVE 忽略大小写

Pattern patternForTag = Pattern.compile (regxpForTag,Pattern. CASE_INSENSITIVE );

Pattern patternForAttrib = Pattern.compile (regxpForTagAttrib,Pattern. CASE_INSENSITIVE );

Matcher matcherForTag = patternForTag.matcher(str);

StringBuffer sb = new StringBuffer ();

boolean result = matcherForTag.find();

// 循环找出每个 img 标签

while (result) {

StringBuffer sbreplace = new StringBuffer( "<img " );

Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag

.group(1));

if (matcherForAttrib.find()) {

matcherForAttrib.appendReplacement(sbreplace, startTag

+ matcherForAttrib.group(1) + endTag);

}

matcherForAttrib.appendTail(sbreplace);

matcherForTag.appendReplacement(sb, sbreplace.toString());

result = matcherForTag.find();

}

matcherForTag.appendTail(sb);

return sb.toString();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: