2017-01-26 2 views
0

Die Angabe für diesen qusetion ist Control on XML elements nesting using FOR XMLSql für xml: Wie ein bestimmtes Feld zu vermeiden ist, wird als Attribut ausgegeben?

Ich möchte, dass die Ausgangsänderungen von

<security AccessLevel="5" /> 

zu

<security>5<security/> 

Grundsätzlich statt AccessLevel als Attribut Anzeige würde ich seinen Wert gefallen wird der Wert des Elements security. So erreichen Sie ein solches Ergebnis. Ich kopiere hier das Beispiel aus dem verlinkten Beitrag zur Klarheit:

DECLARE @Employees table( 
    EmpID int NOT NULL, 
    Name nvarchar(50), 
    Surname nvarchar(50), 
    DateOfBirth date, 
    DepartmentID int, 
    AccessLevel int); 
insert into @Employees values ('1', 'John','Doe','1980-01-31',100,5) 
insert into @Employees values ('2', 'Mary','Rose','1971-02-27',102,3) 
insert into @Employees values ('3', 'Luke','Perry','1995-12-01',104,1) 

select 
    employee.Name, 
    employee.Surname, 
    employee.DateOfBirth, 
    department.DepartmentID, 
    security.AccessLevel -- THIS IS THE INVOLVED FIELD 
from @Employees employee 
join @Employees department on department.DepartmentID = employee.DepartmentID 
join @Employees security on security.AccessLevel = employee.AccessLevel 
for xml auto 

Antwort

3

ich dies mit @ in Alias-Namen die attributes in xml zu erzeugen tun würde. Um das accesslevel als Element zu erhalten nur fügen Sie nicht @ zu Aliasnamen

So etwas wie dieses

SELECT NAME   AS [@Name], 
     Surname  AS [@Surname], 
     DateOfBirth AS [@DateOfBirth], 
     DepartmentID AS [department/@DepartmentID], 
     AccessLevel AS [department/security] 
FROM @Employees 
FOR xml path('employee') 

Ergebnis:

<employee Name="John" Surname="Doe" DateOfBirth="1980-01-31"> 
    <department DepartmentID="100"> 
    <security>5</security> 
    </department> 
</employee> 
<employee Name="Mary" Surname="Rose" DateOfBirth="1971-02-27"> 
    <department DepartmentID="102"> 
    <security>3</security> 
    </department> 
</employee> 
<employee Name="Luke" Surname="Perry" DateOfBirth="1995-12-01"> 
    <department DepartmentID="104"> 
    <security>1</security> 
    </department> 
</employee> 
Verwandte Themen