Разобрать многорукий XML в SQL Server - PullRequest
1 голос
/ 01 октября 2019

Мне нужно получить несколько атрибутов из данных, хранящихся в столбце xml в SQL Server.

Данные XML имеют много корней, и я не могу получить какие-либо данные, кроме "

Этофрагмент XML:

<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" 
     xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
     xmlns:rs="urn:schemas-microsoft-com:rowset" 
     xmlns:z="#RowsetSchema">
    <s:Schema id="RowsetSchema">
        <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="300">
            <s:AttributeType name="GmID" rs:number="1" rs:writeunknown="true">
                <s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false"/>
            </s:AttributeType>
       </s:ElementType>
    </s:Schema>
    <rs:data>
            <z:row GmID="550733" ReadingTime="2019-09-23T15:44:58" DataSequenceNumber="132978"/>
    </rs:data>
</xml>

<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" 
     xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
     xmlns:rs="urn:schemas-microsoft-com:rowset" 
     xmlns:z="#RowsetSchema">
     <s:Schema id="RowsetSchema">
        <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="300">
            <s:AttributeType name="GmID" rs:number="1" rs:writeunknown="true">
                <s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false"/>
            </s:AttributeType>
            </s:ElementType>
    </s:Schema>
      <rs:data>
            <z:row GmID="550733" ReadingTime="2019-09-23T15:44:58" DataSequenceNumber="133008"/>
          </rs:data>
</xml>

Как я могу получить все атрибуты, которые существуют под "

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете получить любой из атрибутов, используя следующий синтаксис. Если производительность важна, вы можете объявить пространство имен для вашего запроса вместо использования "*".

select x.value('./*:data[1]/*:row[1]/@DataSequenceNumber','int')
from  @x.nodes('/xml') as t(x)

вернет:

132978  
133008
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...