2017-02-07 5 views
0

私はli 1 ta 3のすべての値を選択したいとします(たとえば)。しかし、私はできません。 質問の最後に私のコードの最後と最後の出力。sqlのhtml文書からテキスト値を選択する方法は?

コード:

Declare @XML1 xml = N' 
<div> 
<div> 
    <h4>انتخاب رنگ</h4> 
    <ul id="frmErblProductColor" autocompelete="off"> 
     <li> 
      <div id="frmErblProductColor_ContainerItem_0" class="DkProductColorBox"> 
       <input id="frmErblProductColor_RadioItem_0" type="radio" name="ctl29$frmErblProductColor$ProductColorGroup" value="1" checked="checked"/> 
       <label id="frmErblProductColor_LabelItem_0" for="frmErblProductColor_RadioItem_0" data-color="#2b2b2b">مشکی</label> 
      </div> 
     </li> 
     <li> 
      <div id="frmErblProductColor_ContainerItem_1" class="DkProductColorBox"> 
       <input id="frmErblProductColor_RadioItem_1" type="radio" name="ctl29$frmErblProductColor$ProductColorGroup" value="4"/> 
       <label id="frmErblProductColor_LabelItem_1" for="frmErblProductColor_RadioItem_1" data-color="blue">آبی</label> 
      </div> 
     </li> 
     <li> 
      <div id="frmErblProductColor_ContainerItem_2" class="DkProductColorBox"> 
       <input id="frmErblProductColor_RadioItem_2" type="radio" name="ctl29$frmErblProductColor$ProductColorGroup" value="16"/> 
       <label id="frmErblProductColor_LabelItem_2" for="frmErblProductColor_RadioItem_2" data-color="darkred">زرشکی</label> 
      </div> 
     </li> 
    </ul> 
</div> 
<div></div> 
<ul></ul> 
</div>'; 

SELECT 
    t.v.value('(div[1]/h4/text())[1]','nvarchar(max)') AS [Selection] 
    ,t.v.value('(ul/li/div/label/text())[1]','nvarchar(max)') AS [Value] 
    ,t.v.value('(ul/li/div/input/@value)[1]','nvarchar(max)') AS [Code] 
FROM 
    @XML1.nodes('div/div[1]') as t(v) 

SELECT 
    c.d.value('.','nvarchar(max)') AS [Selection] 
    ,t.v.value('.','nvarchar(max)') AS [Value] 
    ,f.j.value('@value','nvarchar(max)') AS [Code] 
FROM 
    @XML1.nodes('div/div[1]/div[1]/h4') as c(d) 
    cross apply @XML1.nodes('div/div[1]/ul/li/div/label') as t(v) 
    cross apply @XML1.nodes('div/div[1]/ul/li/div/input') as f(j) 

出力最終なければならない:このコードで今

[Code]    [Selection]    [Value]   
--------------  --------------  ----------- 
مشکی    انتخاب رنگ      1   
زرشکی    انتخاب رنگ     16 
آبی    انتخاب رنگ      4 

Can`t。

答えて

0
SELECT 
    t.v.value('(input/@value)[1]','nvarchar(max)') AS [Code] 
    ,@XML1.value('(div/div/h4/text())[1]','nvarchar(max)') AS [Selection] 
    ,t.v.value('(label/text())[1]','nvarchar(max)') AS [Value] 
FROM 
    @XML1.nodes('div/div/ul/li/div') as t(v) 

それとも、このきれいです:

SELECT 
    [Selection] 
    ,t.v.value('(ul/li/div/label/text())[1]','nvarchar(max)') AS [Value] 
    ,t.v.value('(ul/li/div/input/@value)[1]','nvarchar(max)') AS [Code] 
    ,t.v.query('.') 
FROM 
    @XML1.nodes('div/div[1]') as t(v) 
outer apply (select @XML1.value('(div/div/h4/text())[1]','nvarchar(max)') AS [Selection]) a 
+0

良い私の友人。 ... – RedArmy

関連する問題