Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Парсинг XML с использованием OPENXML.  [new]
sPaul
Member

Откуда: Moscow
Сообщений: 387
Вот такой запрос:

declare @sql xml

set @sql = '
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <DiscoverResponse xmlns="urn:schemas-microsoft-com:xml-analysis" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2">
      <return>
        <root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <xsd:schema xmlns:sql="urn:schemas-microsoft-com:xml-sql" targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" elementFormDefault="qualified">
            <xsd:element name="root">
              <xsd:complexType>
                <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                  <xsd:element name="row" type="row" />
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
            <xsd:simpleType name="uuid">
              <xsd:restriction base="xsd:string">
                <xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}" />
              </xsd:restriction>
            </xsd:simpleType>
            <xsd:complexType name="xmlDocument">
              <xsd:sequence>
                <xsd:any />
              </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="row">
              <xsd:sequence>
                <xsd:element sql:field="METADATA" name="METADATA" type="xmlDocument" />
              </xsd:sequence>
            </xsd:complexType>
          </xsd:schema>
          <row>
            <xars:METADATA xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:xars="urn:schemas-microsoft-com:xml-analysis:rowset">
              <MeasureGroup>
                <Name>Транзакции</Name>
                <ID>Fact Transaction</ID>
                <CreatedTimestamp>2009-08-21T11:32:28</CreatedTimestamp>
                <LastSchemaUpdate>2009-08-24T08:42:50</LastSchemaUpdate>
                <LastProcessed>2009-08-24T08:45:59</LastProcessed>
                <State>PartiallyProcessed</State>
              </MeasureGroup>
            </xars:METADATA>
          </row>
        </root>
      </return>
    </DiscoverResponse>
  </soap:Body>
</soap:Envelope>
'

declare @idoc int
exec sp_xml_preparedocument @idoc output, @sql

SELECT * FROM OPENXML(@idoc,    
'/Envelope/Body/DiscoverResponse/return/root/row/METADATA/MeasureGroup',2)
WITH
(    
State varchar(255)
)    

EXEC sp_xml_removedocument @idoc
- ничего не возвращает. Каким образом получить значение State из данного xml?
26 авг 09, 12:28    [7581257]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг XML с использованием OPENXML.  [new]
sPaul
Member

Откуда: Moscow
Сообщений: 387
Может кому пригодится.

declare @idoc int
exec sp_xml_preparedocument @idoc output, @sql, '<METADATA xmlns:a="http://schemas.microsoft.com/analysisservices/2003/engine"/>'

SELECT * FROM OPENXML(@idoc,    
'//a:MeasureGroup',2)
WITH
(    
[a:State] varchar(255)
)    

EXEC sp_xml_removedocument @idoc
26 авг 09, 14:06    [7581995]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг XML с использованием OPENXML.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Может пригодится:
Коннектор к веб-службам
Начиная с коммента -- Парсирование SOAP ответа.


Парсите DataSet со схемой?! Интересно бы написать монстро универсальную процедуру динамической генерации таблы.
Интересно, а Web Service ваш? А то в вашем случае IMXO накладно передавать/хранить схему.
28 авг 09, 12:31    [7590142]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить