2009-02-06 2 views

답변

1

글쎄, 일반적인 접근 방식은 xsi:nil="true"과 같은 일부 마커 속성입니다 (단 하나의 예일지라도).

0

어느 자체 정의 된 빈 태그 (반환)하고 그것을 확인하거나 사용자가 데이터를 읽는 방식 변경 :

  • 먼저 문자열 VAR로 스트림을 가져오고 String.IsNullOrEmpty 확인을
  • 단지-시도 잡을 저장 프로 시저에 대한 출력 매개 변수를 만들 경우 ArgumentNullException/ArgumentException이
0

에 대한 독자. 저장 프로 시저 내에서 값을 기존 개체의 경우 1로 설정하고 존재하지 않는 경우 0으로 설정하십시오. 아웃 매개 변수, 당신은에 의해 널 (어떻게 제어하는 ​​XML 생성/소비하는 프로세스의 많은 예) 표현할 수

CREATE PROCEDURE sp_GetObjectAsXml   
(
    @intId int, 
    @intExists int out 
) 
AS 
BEGIN 
    SELECT 'hello world' WHERE 1 = @intId 
    SET @intExists = @@ROWCOUNT 
END 

-- Happy Path 
DECLARE @intExists int 
exec sp_GetObjectAsXml 1, @intExists out 
SELECT @intExists -- results in 1 

-- Sad Path 
DECLARE @intExists int 
exec sp_GetObjectAsXml 10, @intExists out 
SELECT @intExists -- results in 0 
+0

우리는 하나의 객체를 반환한다고 가정합니다. 우리는 여러 개의 자식 객체를 가질 수 있습니다 : 일부는 null이고 그렇지 않은 객체도 있습니다. –

+0

공정한 포인트. 그 맥락에서 나는 당신의 접근법이 속성을 사용하는 것을 좋아한다. –

0

1. 당신의 "외부 제약 조건"에 따라 경우에만 저장 프로 시저의 XML 결과를 역 직렬화 요소를 전혀 포함하지 않습니다.

받는 쪽 (도식 유효성 검사 등)은 선택 요소를 처리 할 준비가되어 있어야합니다.

1

는 내가 본 두 가지 방법은 다음과 같습니다

  1. 는 항목 (ISNULL = "참 | 거짓")이 null인지 여부를 표시하는 속성을 포함합니다. 일반적으로, 속성이 포함되어 있지 않은 경우는 false가 가정됩니다.
  2. 해당 노드에 요소를 포함하지 마십시오. xml에 존재하지 않으면 null입니다. 그것이 존재하고 비어 있다면 그것은 단지 빈 문자열입니다. 이것은 물론 구문 분석 코드가 어떤 요소가 존재해야 하는지를 결정할 수 있는지 여부 (스키마 또는 XML 파일의 앞부분에있는 정보를 통해 일반적으로 결정됨)에 의존합니다.

첫 번째 옵션은 일반적으로 다루기가 더 쉽지만 더 많은 텍스트가 생성됩니다. 두 번째는 더 작은 xml 파일을 생성 할 수 있습니다.

관련 문제