2012-09-27 7 views
2

메신저를 사용하여 속성 :방법 요소와 XML을 생성하고 다음과 같은 형식의 XML을 생성하기 위해 노력하고 XML을 명시 적

<Root> 
    <Domain>Abc</Domain> 
    <Name>Xyz</Name> 
    <Contents> 
     <Content> 
      <ID>1</ID> 
      <Value>Test 1</Value> 
      <Record ID="1">Test 1</Record> 
     </Content> 
     <Content> 
      <ID>2</ID> 
      <Value>Test 2</Value> 
      <Record ID="2">Test 2</Record> 
     </Content> 
    </Contents> 
</Root> 

내 쿼리는 다음과 같다 :

declare @TestTable table (ID int, Value varchar(100)) 

insert into @TestTable values (1,'Test 1') 
insert into @TestTable values (2,'Test 2') 

declare @Domain varchar(max)='Abc' 
declare @Name varchar(max)='Xyz' 

SELECT 
1 AS Tag, 
NULL AS Parent, 
@Domain as 'Root!1!Domain!Element', 
@Name as 'Root!1!Name!Element', 
NULL as 'Contents!2!Element', 
NULL as 'Content!3!ID!Element', 
NULL as 'Content!3!Value!Element', 
NULL as 'Content!3!Record!Element' 

union 

SELECT 
2 AS Tag, 
1 AS Parent, 
NULL,NULL,NULL,NULL,NULL,NULL 

union 

select 
3 as Tag, 
2 as Parent, 
NUll,NUll,NULL, 
ID,Value,Value 
from @TestTable 

FOR XML EXPLICIT 

내 쿼리를 생성하지 않습니다 기록 태그는 완전히, 현재는

으로해야하는

<Record>Test 2</Record> 

입니다

<Record ID=2>Test 2</Record> 

나는 모든 가능성을 시도했지만 태그를 얻지 못했습니다. 아무도 나를이 문제를 해결할 수 있습니다.

답변

0

xml에서 예상 된 출력을 얻을 수 없습니다. 대신 xml 경로를 사용하고 출력을 받았습니다. 이것은 내 업데이트 검색어입니다

SELECT 
     @Domain "Domain", 
     @Name "Name", 
(
SELECT 
     ID "ID", 
     Value "Value", 
     (select 
     ID "@ID", 
     Value as "text()"  
     FOR XML PATH('Record'), ELEMENTS, TYPE)  
FROM @TestTable 
FOR XML PATH ('Content'), TYPE, ROOT('Contents') 
) 
FOR XML PATH ('Root') 

xml explicit을 사용하는 수정 사항을 게시하실 수 있습니다.

0

FOR XML EXPLICIT을 사용할 때 ORDER BY를 잊지 마십시오.


SELECT 
    1 AS Tag, 
    NULL AS Parent, 
    @Domain as 'Root!1!Domain!Element', 
    @Name as 'Root!1!Name!Element', 
    NULL as 'Contents!2!Element', 
    NULL as 'Content!3!ID!Element', 
    NULL as 'Content!3!Value!Element', 
    NULL as 'Record!4!ID', 
    NULL as 'Record!4!' 

union 

SELECT 
    2 AS Tag, 
    1 AS Parent, 
    @Domain,NULL,NULL,NULL,NULL,NULL, null 

union 

select 
    3 as Tag, 
    2 as Parent, 
    @Domain,NUll,NULL, 
    ID,Value,null,null 

    from @TestTable 
union 

select 
    4 as Tag, 
    3 as Parent, 
    @Domain,NUll,NULL, 
    ID,Value,ID,Value 

    from @TestTable 
ORDER BY 'Root!1!Domain!Element','Contents!2!Element','Content!3!ID!Element','Record!4!ID' 

FOR XML EXPLICIT