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

Откуда: Москва
Сообщений: 1053
Надо выгрузить данные в xml вида:

<item>
      <title>Green Living Website Business, Fully Automated</title>
      <link>http://www.xxx.com/listing.asp?bId=164476</link>
      <description>Green Living Website Business, Fully Automated $700 USD Valuable domain nameFully automatic, self-updating website. No experience necessary. Training and support provided to buyer.Website translates into 49 different languages and can be operated...</description>
      <pubDate>Sun, 15 Jan 2012 22:32:48 -0700</pubDate>
      <guid isPermaLink="false">xxx_rss_164476</guid>
    </item>


Делаю так:
SELECT	1                   as Tag, 
        NULL                as Parent,
        item.businessTitle	as [item!1!title!element],
        'http://www.xxx.com/listing.asp?bId=' + cast(item.businessId as varchar(50)) as [item!1!link!element],
        item.businessSearchData as [item!1!description!element],
        item.businessTimestamp	as [item!1!pubDate!element],
        'xxx_rss_' + cast(item.businessId as varchar(50)) as [item!1!guid!element],
	'False' as [item!1!isPermaLink]         
FROM Business as item
FOR XML EXPLICIT


Получаю такой xml:
<item isPermaLink="False">
  <title>Car Wash for Sale</title>
  <link>http://www.xxx.com/listing.asp?bId=1</link>
  <description>Selling Car Wash in Miami, Florida</description>
  <pubDate>2012-01-17T19:09:48.840</pubDate>
  <guid>xxx_rss_1</guid>
</item>


Как запихать аттрибут isPermaLink в элемент guid?
17 янв 12, 19:51    [11920832]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
uncle_max
Member

Откуда:
Сообщений: 70
Посмотрите здесь
http://beyondrelational.com/blogs/jacob/archive/2010/05/06/for-xml-workshop-understanding-for-xml-explicit.aspx
http://dcx.sybase.com/1200/en/dbusage/sqlxml-s-5569418.html
18 янв 12, 03:52    [11922088]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
SELECT	1                   as Tag
		,NULL                as Parent,
        item.businessTitle	as [item!1!title!element],
        'http://www.xxx.com/listing.asp?bId=' + cast(item.businessId as varchar(50)) as [item!1!link!element],
        item.businessSearchData as [item!1!description!element],
        item.businessTimestamp	as [item!1!pubDate!element],
        null					as [guid!2!],
        null					as [guid!2!isPermaLink] 
FROM 
	Business as item
union all        
select 
		2                   as Tag
		,1                as Parent,
		null,
		null,
		null,
		null,
        'xxx_rss_' + cast(item.businessId as varchar(50)) as [guid!2!element],
		'False' as [guid!2!isPermaLink]         
FROM 
	Business as item
FOR XML EXPLICIT


?
18 янв 12, 08:32    [11922430]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
HandKot,

Нет, получается лажа вида:

<item>
      <title>Green Living Website Business, Fully Automated</title>
      <link>http://www.xxx.com/listing.asp?bId=164476</link>
      <description>Green Living Website Business, Fully Automated $700 USD Valuable domain nameFully automatic, self-updating website. No experience necessary. Training and support provided to buyer.Website translates into 49 different languages and can be operated...</description>
      <pubDate>Sun, 15 Jan 2012 22:32:48 -0700</pubDate>
</item>
<item>
      <title>Website Business</title>
      <link>http://www.xxx.com/listing.asp?bId=164477</link>
      <description>Test</description>
      <pubDate>Sun, 16 Jan 2012 22:32:48 -0700</pubDate>
      <guid isPermaLink="false">xxx_rss_164476</guid>
      <guid isPermaLink="false">xxx_rss_164477</guid>
    </item>


Т.е. все guid получаются в последнем item.
18 янв 12, 11:14    [11923296]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Hel975,

были бы тестовые данные сварганил бы запросец, а так лень напрягаться.
18 янв 12, 11:30    [11923434]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
WarAnt,

Данные генерятся за 2 минуты.

create table Business (
	businessId	int identity(1,1) not null primary key,
	businessTitle	varchar(255) not null,
	businessSearchData	text null,
	businessTimestamp	datetime not null
)

insert into Business (businessTitle, businessSearchData, businessTimestamp)
select 'Car Wash', 'Car Wash for sale in Miami, Florida', getdate()

insert into Business (businessTitle, businessSearchData, businessTimestamp)
select 'Italian Pizzeria', 'Italian Pizzeria for sale in New York, NY', getdate()

insert into Business (businessTitle, businessSearchData, businessTimestamp)
select 'Webstudio', 'WebStudio for sale', getdate()
18 янв 12, 11:42    [11923555]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Т.е. все guid получаются в последнем item.

чтоб такого не было, отсортировать еще надо. так, например:
SELECT	1                   as Tag
		,NULL                as Parent,
         item.businessTitle	as [item!1!title!element],
         'http://www.xxx.com/listing.asp?bId=' + cast(item.businessId as varchar(50)) as [item!1!link!element],
         item.businessSearchData as [item!1!description!element],
         item.businessTimestamp	as [item!1!pubDate!element],
         null					as [guid!2!],
         null					as [guid!2!isPermaLink]
FROM
	Business as item
union all
select
		2                   as Tag
		,1                as Parent,
		null,
		'http://www.xxx.com/listing.asp?bId=' + cast(item.businessId as varchar(50)),
		null,
		null,
         'xxx_rss_' + cast(item.businessId as varchar(50)) as [guid!2!element],
		'False' as [guid!2!isPermaLink]
FROM
	Business as item
order by 4, 2	
FOR XML EXPLICIT




Posted via ActualForum NNTP Server 1.5

18 янв 12, 11:54    [11923698]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
daw,

Уже лучше, но теперь получается:

<guid isPermaLink="False"><isPermaLink>xxx_rss_137422</isPermaLink></guid>


А должно быть:

<guid isPermaLink="False">xxx_rss_137422</guid>
18 янв 12, 11:58    [11923735]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2000 и explicit  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
daw,

Пардон, это я уже поменяла немного код от HandKot и получилось с глюком. А так вроде как надо получается. Спасибо.
18 янв 12, 12:02    [11923771]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить