91 / 56 / 12
Регистрация: 02.10.2008
Сообщений: 550
1

Выборка из XML

04.03.2016, 15:17. Показов 2856. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не силен в выборке данных из XML, поэтому обращусь к спецам. Имеется XML
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<return xmlns="urn:schemas-microsoft-com:xml-analysis">
  <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" xmlns:msxmla="http://schemas.microsoft.com/analysisservices/2003/xmla">
    <xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" 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="CATALOG_NAME" name="CATALOG_NAME" type="xsd:string" minOccurs="0" />
          <xsd:element sql:field="DESCRIPTION" name="DESCRIPTION" type="xsd:string" minOccurs="0" />
          <xsd:element sql:field="ROLES" name="ROLES" type="xsd:string" minOccurs="0" />
          <xsd:element sql:field="DATE_MODIFIED" name="DATE_MODIFIED" type="xsd:dateTime" minOccurs="0" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
    <row>
      <CATALOG_NAME>AdventureWorks</CATALOG_NAME>
      <DESCRIPTION />
      <DATE_MODIFIED>2013-12-24T15:57:43.013333</DATE_MODIFIED>
    </row>
    <row>
      <CATALOG_NAME>AdventureWorks 2</CATALOG_NAME>
      <DESCRIPTION />
      <DATE_MODIFIED>2013-12-24T15:57:43.013333</DATE_MODIFIED>
    </row> 
    <row>
      <CATALOG_NAME>AdventureWorks 3</CATALOG_NAME>
      <DESCRIPTION />
      <DATE_MODIFIED>2013-12-24T15:57:43.013333</DATE_MODIFIED>
    </row>           
  </root>
</return>
надо получить из него CATALOG_NAME и DATE_MODIFIED
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2016, 15:17
Ответы с готовыми решениями:

Выборка из XML поля таблицы
Доброго времени суток, уважаемые форумчане! Подскажите пожалуйста, как десериализовать XML поле...

Рандомная выборка из xml
Подскажите пожалуйста как рандомно выбирать запись из xml файла и загружать ее например на textbox...

Выборка из файла XML
Доброго времени суток! Подскажите, пожалуйста, как грамотно сделать выборку из файла XML,...

Выборка данных из xml
как лучше парсить данные xml? вот пример &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;response...

3
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
04.03.2016, 16:22 2
Лучший ответ Сообщение было отмечено Claster как решение

Решение

Это не XML-документ. Это cхема XML-документа.

Добавлено через 12 минут
Не заметил, что документ совмещен со схемой.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
declare @x xml = N'<return xmlns="urn:schemas-microsoft-com:xml-analysis">
  <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" xmlns:msxmla="http://schemas.microsoft.com/analysisservices/2003/xmla">
    <xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" 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="CATALOG_NAME" name="CATALOG_NAME" type="xsd:string" minOccurs="0" />
          <xsd:element sql:field="DESCRIPTION" name="DESCRIPTION" type="xsd:string" minOccurs="0" />
          <xsd:element sql:field="ROLES" name="ROLES" type="xsd:string" minOccurs="0" />
          <xsd:element sql:field="DATE_MODIFIED" name="DATE_MODIFIED" type="xsd:dateTime" minOccurs="0" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
    <row>
      <CATALOG_NAME>AdventureWorks</CATALOG_NAME>
      <DESCRIPTION />
      <DATE_MODIFIED>2013-12-24T15:57:43.013333</DATE_MODIFIED>
    </row>
    <row>
      <CATALOG_NAME>AdventureWorks 2</CATALOG_NAME>
      <DESCRIPTION />
      <DATE_MODIFIED>2013-12-24T15:57:43.013333</DATE_MODIFIED>
    </row> 
    <row>
      <CATALOG_NAME>AdventureWorks 3</CATALOG_NAME>
      <DESCRIPTION />
      <DATE_MODIFIED>2013-12-24T15:57:43.013333</DATE_MODIFIED>
    </row>           
  </root>
</return>';
 
with xmlnamespaces('urn:schemas-microsoft-com:xml-analysis' as ns1, default 'urn:schemas-microsoft-com:xml-analysis:rowset')
select
 t.n.value('CATALOG_NAME[1]', 'varchar(100)'),
 t.n.value('DATE_MODIFIED[1]', 'datetime')
from
 @x.nodes('/ns1:return/root/row') t(n);
1
91 / 56 / 12
Регистрация: 02.10.2008
Сообщений: 550
04.03.2016, 16:27  [ТС] 3
Спасибо, поясните пожалуйста необходимость строки
T-SQL
1
with xmlnamespaces('urn:schemas-microsoft-com:xml-analysis' as ns1, default 'urn:schemas-microsoft-com:xml-analysis:rowset')
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
04.03.2016, 16:45 4
Лучший ответ Сообщение было отмечено Claster как решение

Решение

Элементы в этом документе относятся к разным пространствам имен. Предложение xmlnamespaces как раз эти пространства описывает.
Т.е. return относится к пространству имен urn:schemas-microsoft-com:xml-analysis, а root и row к urn:schemas-microsoft-com:xml-analysis:rowset.
Без указания префикса пространства имен, элемент не будет доступен.

Можно не указывать конкретные пространства имен и написать универсально:
T-SQL
1
2
3
4
5
select
 t.n.value('*:CATALOG_NAME[1]', 'varchar(100)'),
 t.n.value('*:DATE_MODIFIED[1]', 'datetime')
from
 @x.nodes('/*:return/*:root/*:row') t(n);
Но, ИМХО, это неправильно.
1
04.03.2016, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2016, 16:45
Помогаю со студенческими работами здесь

Выборка информации из XML
Добрый день, уважаемые! Подскажите пожалуйста синтаксис выборки нужной информации из XML. Нужно...

Выборка из XML файла
При выборке игнорируется выбор с10,с11,с12 и с13. Что забыла сделать подскажите. namespace...

Выборка данных из файла XML
Привет! Помогите пожалуйста, мне нужно выбрать нужные мне данные из xml документа что в примере...

Выборка из XML на ASP.NET
Нижепреведенная выборка берет все значения из XML документа, мне же нужна выборка по Row и Cell....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru