2016-09-19 12 views
2

我的代碼:如何在sql這個例子中獲取節點a和img?

Declare @htmlXML xml =' 
<li> 
      <a class="group" onclick="changeimage(http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/1200x1200/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg)" href="javascript:;" title="" > 
       <img src="http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/250x250/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg" alt="Acer Aspire 1420P Battery [6 Cells 4400mAh 10.8V]"/> 
      </a> 
     </li> 
     ' 



SELECT n.c.value('@alt','nvarchar(max)') as Brand 
     ,t.v.value('@onclick','nvarchar(max)') as [URL] 
     FROM @htmlXML.nodes('li/a') as t(v) 
     outer apply t.v.nodes('li/a/img') as n(c) 

我想這個輸出中的SQL。 輸出:

url img in <a onclick : http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/1200x1200/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg 

alt img in img tag: Acer Aspire 1420P Battery [6 Cells 4400mAh 10.8V] 

感謝您的建議我的朋友

+0

嗨,你是新來的(順便說一句:歡迎)請允許我一個提示:如果您的問題解決了,那將是非常你好,在(最好)答案的投票櫃檯下面打勾驗收。這將1)標記這個問題已解決2)使追隨者更容易找到最佳的解決方案3)支付點給回答者和4)支付點給你。一旦你自己超過了15分的邊界,你就被要求對貢獻進行投票。這是SO的方式來說聲謝謝。並且請看看你的舊問題。快樂編碼! – Shnugo

回答

0

除了一個事實,即HTML不是XML(和我真正開始微笑着從你讀到這樣的問題再次,看herehere)在這種情況下,它可能工作(仍然不會告知)..

Declare @htmlXML xml = 
'<li> 
    <a class="group" onclick="changeimage(http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/1200x1200/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg)" href="javascript:;" title=""> 
    <img src="http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/250x250/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg" alt="Acer Aspire 1420P Battery [6 Cells 4400mAh 10.8V]" /> 
    </a> 
</li>'; 

--The查詢

SELECT a.value('@class','nvarchar(max)') AS a_class 
     ,a.value('@onclick','nvarchar(max)') AS a_onclick 
     ,SUBSTRING(a.value('@onclick','nvarchar(max)'),13,LEN(a.value('@onclick','nvarchar(max)'))-13) AS a_onclick_URL 
     ,a.value('@href','nvarchar(max)') AS a_href 
     ,img.value('@src','nvarchar(max)') as img_src 
     ,img.value('@alt','nvarchar(max)') as img_alt 
     FROM @htmlXML.nodes('li/a') as A(a) 
     outer apply a.nodes('img') as B(img); 

結果(按行實際上...)

a_class: group  
a_onclick: changeimage(http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/1200x1200/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg) 
URL:  http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/1200x1200/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg 
a_href: javascript:; 
img_src: http://laptopbatteryone.com/media/catalog/product/cache/1/thumbnail/250x250/9df78eab33525d08d6e5fb8d27136e95/l/b/lb-ac48-44-back.jpg 
img_alt: Acer Aspire 1420P Battery [6 Cells 4400mAh 10.8V] 
+0

感謝Shungo,非常好。已解決。 – cyrus2500

相關問題