java 對html標籤 讀取值 增刪改 對應的值,對應的標籤名稱

運行結果: html

 

package base; java

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

public class ZYJ { app

 /**
  * @param args
  */
 public static void main(String[] args) {
  String htmlStr = "<img class=\"articleImg\" nodes=\"%5B%5D\" src=\"http://img.jcbzw315.com/upload/user/space/32777/2016/04/30/59cfbcc5-2888-49a6-91fe-37529d1d819b.jpg\" style=\"\">";
  System.out.println("開始:" + htmlStr);
  htmlStr = ZYJ.changeHtmlTag(htmlStr, "img", "src", "data-original", "\"");
  htmlStr = ZYJ.updateAllHtmlTag(htmlStr, "img", "src", "/assets/images/pub/loading_bg.gif", "\"");
  System.out.println("最終:  " + ZYJ.updateHtmlTag(htmlStr, "img", "class", "", " lazy\""));
 } spa

 /**
  * @param htmlStr
  *            html文本
  * @param searchTag
  *            要修改的目標標籤
  * @param searchAttrib
  *            目標標籤中的屬性
  * @param newStr
  *            修改值 保留本來
  */
 public static String updateHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
  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:" + matcherForTag.group(1));
   Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1)); .net

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

 /**
  * @param htmlStr
  *            html文本
  * @param searchTag
  *            要修改的目標標籤
  * @param searchAttrib
  *            目標標籤中的屬性
  * @param newStr
  *            修改值 不保留本來
  */
 public static String updateAllHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
  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:" + matcherForTag.group(1));
   Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1)); get

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

 /**
  * @param htmlStr
  *            html文本
  * @param searchTag
  *            要修改的目標標籤
  * @param searchAttrib
  *            目標標籤中的屬性
  * @param newStr
  *            修改值 不保留本來
  */
 public static String changeHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
  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:" + matcherForTag.group(1));
   Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1)); import

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

 /**
  * @param htmlStr
  *            html文本
  * @param searchTag
  *            要修改的目標標籤
  * @param searchAttrib
  *            目標標籤中的屬性
  * @param newStr
  *            修改值 不保留本來 判斷是否存在標籤 不存在 直接 新增進去
  */
 public static String JudgeChangeHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
  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:" + matcherForTag.group(1));
   Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1));

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

相關文章
相關標籤/搜索