SQL Server 2008:如何从元素中删除命名空间,但让它显示在root上

时间:2012-06-27 07:32:24

标签: namespaces for-xml

我使用SQL Server2008 FOR XML子句使用bcp生成XML文件。

当我使用以下查询时,结果很好:

WITH XMLNAMESPACES (        
   'http://base.google.com/ns/1.0' AS g,
   DEFAULT 'http://www.w3.org/2005/Atom'
    )
select ID, Name AS "g:Name" from PaymentMethods For XML PATH ('entry'), Root('feed') 

结果:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
  <entry>
    <ID>1</ID>
    <g:Name>BPay</g:Name>
  </entry>
  <entry>
    <ID>2</ID>
    <g:Name>Cash</g:Name>
  </entry>
</feed>

但我还想在Root之后添加一些静态元素,比如Title和date。我能够做到这一点,但是,名称空间标签也出现在我不想要的元素中。请注意,我想要一些带有名称空间前缀的元素,例如

我正在使用的查询是:

WITH XMLNAMESPACES (
    'http://base.google.com/ns/1.0' AS g,
    DEFAULT 'http://www.w3.org/2005/Atom'
    )
SELECT 
'Google Feed' As Title,
CONVERT(Date, getdate()) As Updated,
(   
select ID, Name AS "g:Name" from PaymentMethods For XML PATH ('entry'), TYPE
)

FOR XML PATH(''),   Root('feed') 

我得到的结果是:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
  <Title>Google Feed</Title>
  <Updated>2012-06-27</Updated>
  <entry xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
     <ID>1</ID>
    <g:Name>BPay</g:Name>
  </entry>
 <entry xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
    <ID>2</ID>
    <g:Name>Cash</g:Name>
  </entry>
</feed>

我希望得到如下结果:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
  <Title>Google Feed</Title>
  <Updated>2012-06-27</Updated>
  <entry>
    <ID>1</ID>
    <g:Name>BPay</g:Name>
  </entry>
  <entry>
    <ID>2</ID>
    <g:Name>Cash</g:Name>
  </entry>
</feed>

请帮忙......

谢谢,

PS

0 个答案:

没有答案