2011-01-20 189 views
0

XML AUTO和列名和空間的問題這是我的SQL在SQL Server 2005中

select 
    ID as [Emp ID], 
    Name as [Employee name], 
    Sal as [Salary] 
from Emp 
FOR XML AUTO, ELEMENTS, ROOT('customers') 

當我發出這個SQL然後未知的數據以XML加入我的字段名。

我喜歡

<customers> 
    <Emp> 
    <Emp_x0020_ID>1</Emp_x0020_ID> 
    <Employee_x0020_name>bob</Employee_x0020_name> 
    <Salary>2020</Salary> 
    </Emp> 
    <Emp> 
    <Emp_x0020_ID>2</Emp_x0020_ID> 
    <Employee_x0020_name>keith</Employee_x0020_name> 
    <Salary>6500</Salary> 
    </Emp> 
    <Emp> 
    <Emp_x0020_ID>3</Emp_x0020_ID> 
    <Employee_x0020_name>markc</Employee_x0020_name> 
    <Salary>5400</Salary> 
    </Emp> 
</customers> 

的XML它顯示<Emp_x0020_ID>代替本<Emp ID>因爲我提列的別名包含「的Emp ID」的空間。怎麼可能修改我的SQL結果空間不會被忽略我的意思是我的xml看起來像

<customers> 
    <Emp> 
    <Emp ID>1</Emp ID> 
    <Employee name>bob</Employee name> 
    <Salary>2020</Salary> 
    </Emp> 
</customers> 

請幫我......緊急。

回答

2

這不是有效的XML,所以不要考慮它。

這是OK

declare @xml xml 
set @xml = '<a><bc>1</bc></a>' 

這種失敗

declare @xml xml 
set @xml = '<a><b c>1</b c></a>' 

多字的元素名稱是無效

+0

+1準確 - 只是不使用XML標籤空間 - 那麼這個問題永遠不會發生:-) – 2011-01-20 19:57:09