假設我們從 DOM 中取出 的 href 屬性值時,照理說會透過比較 DOM 所回傳的屬性名稱是否與 href 相等,進而取出 href 屬性值。( i 和 j 為迴圈變數)
String link;
//宣告 link
System.out.print("[Attr]: "+nodelist.item(i).getAttributes().item(j).getNodeName()+":");
//印出屬性名稱
System.out.print(nodelist.item(i).getAttributes().item(j).getFirstChild().getNodeValue());
//印出屬性值
if(nodelist.item(i).getAttributes().item(j).getNodeName()=="href")
link=nodelist.item(i).getAttributes().item(j).getFirstChild().getNodeValue();
//當屬性名稱與 href 相等時,將屬性值放進 link 內
但實際上真的有 href 屬性,也不會將屬性值放置 link 內,原因在於兩者字串是不同的物件,即便字串相同, Java 也會判定兩者不相等,必須要使用 intern() 將字串放進字串池內,方可單純對字串內容作比較,於是將上述程式碼改成:
String link;
//宣告 link
System.out.print("[Attr]: "+nodelist.item(i).getAttributes().item(j).getNodeName()+":");
//印 出屬性名稱
System.out.print(nodelist.item(i).getAttributes().item(j).getFirstChild().getNodeValue());
// 印出屬性值
if(nodelist.item(i).getAttributes().item(j).getNodeName().intern()=="href")
link=nodelist.item(i).getAttributes().item(j).getFirstChild().getNodeValue();
// 當屬性名稱與 href 相等時,將屬性值放進 link 內
這樣遇到 href 屬性時才能將屬性值放進 link 內。
參考資料:
用equals不行吗
回覆刪除使用equals也是ok的,畢竟字串比較有很多種解法。
刪除