<column>
<LName ChineseName="name1" ShowOrder="0" />
<MRNADT ChineseName="name2" ShowOrder="1" />
<Gender ChineseName="name3" ShowOrder="2" />
</column>说明:节点column为父节点,下面有多个子节点,而这些自己点的名字是随机的,怎么遍历column下的所有节点,并定位到该节点。比如,在不知道节点名字的情况下,如何取出LName节点。xmlsql

解决方案 »

  1.   


    declare @x xmlselect @x='
    <column>
    <LName ChineseName="name1" ShowOrder="0" />
    <MRNADT ChineseName="name2" ShowOrder="1" />
    <Gender ChineseName="name3" ShowOrder="2" />
    </column>'
    select c.value('local-name(.)','varchar(10)') '节点'
     from @x.nodes('/column/*') as t(c)/*
    节点
    ----------
    LName
    MRNADT
    Gender(3 row(s) affected)
    */
      

  2.   

    那又怎么遍历节点column,取出所有节点名字和节点属性值
      

  3.   

    http://blog.csdn.net/hdhai9451/article/details/10551501
      

  4.   


    declare @x xml
     
    select @x='
    <column>
    <LName ChineseName="name1" ShowOrder="0" />
    <MRNADT ChineseName="name2" ShowOrder="1" />
    <Gender ChineseName="name3" ShowOrder="2" />
    </column>'
     
     
    select c.value('local-name(.)','varchar(10)') '节点',
           c.value('@ChineseName','varchar(10)') 'ChineseName',
           c.value('@ShowOrder','varchar(10)') 'ShowOrder'
     from @x.nodes('/column/*') as t(c)
     
    /*
    节点         ChineseName ShowOrder
    ---------- ----------- ----------
    LName      name1       0
    MRNADT     name2       1
    Gender     name3       2(3 row(s) affected)
    */