jsoup - 设置属性

  • 简述

    以下示例将展示在将 HTML 字符串解析为 Document 对象后使用方法设置 dom 元素的属性、批量更新和添加/删除类方法。
  • 句法

    
    Document document = Jsoup.parse(html);
    Element link = document.select("a").first();         
    link.attr("href","www.yahoo.com");     
    link.addClass("header"); 
    link.removeClass("header");    
    
    在哪里
    • document − 文档对象表示 HTML DOM。
    • Jsoup - 解析给定 HTML 字符串的主类。
    • html - HTML 字符串。
    • link − 元素对象表示代表锚标签的html 节点元素。
    • link.attr() − attr(attribute,value) 方法设置元素属性对应的值。
    • link.addClass() − addClass(class) 方法在 class 属性下添加类。
    • link.removeClass() - removeClass(class) 方法删除类属性下的类。
  • 描述

    元素对象代表一个dom元素,并提供了多种获取dom元素属性的方法。
  • 例子

    使用您在 C:/> jsoup 中选择的任何编辑器创建以下 Java 程序。
    JsoupTester.java
    
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    public class JsoupTester {
       public static void main(String[] args) {
       
          String html = "<html><head><title>Sample Title</title></head>"
             + "<body>"
             + "<p>Sample Content</p>"
             + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
             + "<div class='comments'><a href='www.sample1.com'>Sample1</a>"
             + "<a href='www.sample2.com'>Sample2</a>"
             + "<a href='www.sample3.com'>Sample3</a><div>"
             +"</div>"
             + "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
             + "<img name='yahoo' src='yahoo.jpg' />"
             +"</div>"
             +"</body></html>";
          Document document = Jsoup.parse(html);
          //Example: set attribute
          Element link = document.getElementById("googleA");
          System.out.println("Outer HTML Before Modification :"  + link.outerHtml());
          link.attr("href","www.yahoo.com");      
          System.out.println("Outer HTML After Modification :"  + link.outerHtml());
          System.out.println("---");
          
          //Example: add class
          Element div = document.getElementById("sampleDiv");
          System.out.println("Outer HTML Before Modification :"  + div.outerHtml());
          link.addClass("header");      
          System.out.println("Outer HTML After Modification :"  + div.outerHtml());
          System.out.println("---");
          
          //Example: remove class
          Element div1 = document.getElementById("imageDiv");
          System.out.println("Outer HTML Before Modification :"  + div1.outerHtml());
          div1.removeClass("header");      
          System.out.println("Outer HTML After Modification :"  + div1.outerHtml());
          System.out.println("---");
          
          //Example: bulk update
          Elements links = document.select("div.comments a");
          System.out.println("Outer HTML Before Modification :"  + links.outerHtml());
          links.attr("rel", "nofollow");
          System.out.println("Outer HTML Before Modification :"  + links.outerHtml());
       }
    }
    
  • 验证结果

    使用编译类 javac 编译器如下:
    
    C:\jsoup>javac JsoupTester.java
    
    现在运行 JsoupTester 以查看结果。
    
    C:\jsoup>java JsoupTester
    
    看看结果。
    
    Outer HTML Before Modification :<a id="googleA" href="www.google.com">Google</a>
    Outer HTML After Modification :<a id="googleA" href="www.yahoo.com">Google</a>
    ---
    Outer HTML Before Modification :<div id="sampleDiv">
     <a id="googleA" href="www.yahoo.com">Google</a>
    </div>
    Outer HTML After Modification :<div id="sampleDiv">
     <a id="googleA" href="www.yahoo.com" class="header">Google</a>
    </div>
    ---
    Outer HTML Before Modification :<div id="imageDiv" class="header">
     <img name="google" src="google.png">
     <img name="yahoo" src="yahoo.jpg">
    </div>
    Outer HTML After Modification :<div id="imageDiv" class="">
     <img name="google" src="google.png">
     <img name="yahoo" src="yahoo.jpg">
    </div>
    ---
    Outer HTML Before Modification :<a href="www.sample1.com">Sample1</a>
    <a href="www.sample2.com">Sample2</a>
    <a href="www.sample3.com">Sample3</a>
    Outer HTML Before Modification :<a href="www.sample1.com" rel="nofollow">Sample1</a>
    <a href="www.sample2.com" rel="nofollow">Sample2</a>
    <a href="www.sample3.com" rel="nofollow">Sample3</a>