问题
I am using SQL Server2008 FOR XML clause to generate XML file using bcp.
When I use the below query, the result is fine:
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')
Result:
<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>
But I also want to add some static elements, say, Title and date after the Root. I am able to do that, but then, the namespace tags appear in the element as well which I don't want. Please note, I want some elements with the namespace prefix eg,
Query I am using for this is:
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')
And the result I get is:
<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>
Whereas i want a result like:
<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>
Please help...
Thanks,
PS
来源:https://stackoverflow.com/questions/11221375/sql-server-2008-how-to-remove-namespace-from-the-elements-but-let-it-display-o