2017-02-07 9 views
0

Я хочу выбрать все значения li 1 ta 3 (например). но я не могу. мой код нижний и конечный выпуск в конце вопрос.Как выбрать значение текста из html-документа в sql?

Код:

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

 Смежные вопросы

  • Нет связанных вопросов^_^