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

替换xml/html中的属性值

2016-07-11 17:30 429 查看
<pre name="code" class="java">        /**
* 获取指定HTML标签的指定属性的值
* @param source 要匹配的源文本
* @param element 标签名称
* @param attr 标签的属性名称
* @return 属性值列表
*/
public static List<String> match(String source, String element, String attr) {
List<String> result = new ArrayList<String>();
String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?\\s.*?>";
Matcher m = Pattern.compile(reg).matcher(source);
while (m.find()) {
String r = m.group(1);
result.add(r);
}
return result;
}

/**
* @param htmlStr  html文本
* @param searchTag  要修改的目标标签
* @param searchAttrib  目标标签中的属性
* @param newContent  修改值
*/
public static String updateHtmlTag(String htmlStr, String searchTag,
String searchAttrib,String newContent) {
String regxpForTag ="<\\s*" + searchTag + "\\s+([^>]*)\\s*>";
String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']+.([^\"|']+)[\"|']";//"=[\"|']([^[\"|']]+)[\"|']";
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));

//matcherForTag.group()
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag
.group(1));

if (matcherForAttrib.find()) {
//                    System.out.println("ll"+matcherForAttrib.group());
//                    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();
}



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