sp 사용xml_preparedocument XML 문 서 를 처리 하 는 방법
5179 단어 sp xml preparedocumentXML
DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc
위 에 XML 만 읽 었 을 뿐 XML 데 이 터 를 얻 으 려 면 OPEnXML 을 사용 해 야 합 니 다.코드 는 다음 과 같 습 니 다
SELECT *
FROM openxml(@hdoc,'/ROOT/Customer',1)
WITH (CustomerID VARCHAR(40),ContactName VARCHAR(40))
OPEnXML 에는 세 가지 인자 가 있 습 니 다.첫 번 째 는 sp 입 니 다.xml_preparedocument 읽 기 는 OUTPUT 인 자 를 읽 습 니 다.이 예제 에서@hdoc 입 니 다.두 번 째 는 지정 한 위치의 데 이 터 를 가 져 오 는 XPath 표현 식 입 니 다.세 번 째 는 가 져 오 는 방식 을 나타 내 는 옵션 입 니 다.0,1,2,8 네 가지 수치 가 있 습 니 다.상세 한 설명 은 FROM 뒤의 WITH 도 선택 할 수 있 습 니 다.어떤 데이터 필드 를 가 져 올 지 지정 하 는 데 사 용 됩 니 다.위 코드 에 CustomerID 와 ContactName 만 가 져 왔 습 니 다.위의 조회 결 과 는 다음 과 같다.CustomerID ContactName――――――――――――――――――――――――――――――――-VINET Paul Henriot LILAS Carlos Gonzlez 가 WITH 자 구 를 지정 하지 않 으 면 기본 표 구 조 를 조회 한 것 은 다음 과 같다.표 열 에 대한 설명:
열명
데이터 형식
설명 하 다.
id
bigint
문서 노드 의 유일한 ID 입 니 다.
루트 요소 의 ID 값 은 0 입 니 다.마이너스 ID 값 을 유지 합 니 다.
parentid
bigint
표지 노드 의 부모 노드.이 ID 표지 의 부모 노드 가 반드시 부모 요소 가 아 닙 니 다.구체 적 인 상황 은 이 ID 에 표 시 된 노드 의 하위 노드 의 노드 유형 에 달 려 있다.예 를 들 어 노드 가 텍스트 노드 라면 부모 노드 는 속성 노드 일 수 있 습 니 다.
노드 가 XML 문서 의 맨 위 에 있 으 면 ParentID 는 NULL 입 니 다.
노드 종류
int
표지 노드 유형 은 XML 대상 모델(DOM)노드 유형 번호 에 대응 하 는 정수 이다.
다음 값 은 이 열 에 노드 형식 을 표시 할 수 있 는 값 입 니 다.
1=원소 노드
2=속성 노드
3=텍스트 노드
4=CDATA 부분 노드
5=실체 참조 노드
6=실체 노드
7=처리 명령 노드
8=주석 노드
9=문서 노드
10=문서 형식 노드
11=문서 세 션 노드
12=표시 법 노드
자세 한 정 보 는 Microsoft XML(MSXML)SDK 의'노드 유형 속성'테 마 를 참조 하 십시오.
localname
nvarchar(max)
요소 나 속성 을 제공 하 는 로 컬 이름 입 니 다.DOM 대상 에 이름 이 없 으 면 NULL 입 니 다.
prefix
nvarchar(max)
노드 이름 의 네 임 스페이스 접두사 입 니 다.
namespaceuri
nvarchar(max)
노드 의 네 임 스페이스 URI 입 니 다.값 이 NULL 이면 네 임 스페이스 가 존재 하지 않 습 니 다.
datatype
nvarchar(max)
원소 나 속성 줄 의 실제 데이터 형식,그렇지 않 으 면 NULL 입 니 다.데이터 형식 은 내 연 DTD 에서 추정 되 거나 내 연 구조 에서 추정 된다.
prev
bigint
이전 동급 원소 의 XML ID 입 니 다.앞 에 동급 원소 가 없 으 면 NULL 입 니 다.
text
ntext
텍스트 형식의 속성 값 이나 요소 내용 을 포함 합 니 다.가장자리 표 항목 에 값 이 필요 하지 않 으 면 NULL 입 니 다.
WITH 자구 에서우 리 는 또한 설정 을 통 해 부모 요소 의 속성 치 를 얻 을 수 있다.속성 으로 존재 하 는 것 이 아니 라 노드 에 직접 놓 는 것 입 니 다.다음 과 같 습 니 다
DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order OrderID="10248" CustomerID="VINET" EmployeeID="5"
OrderDate="1996-07-04T00:00:00">
<OrderDetail ProductID="11" Quantity="12"/>
<OrderDetail ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order OrderID="10283" CustomerID="LILAS" EmployeeID="3"
OrderDate="1996-08-16T00:00:00">
<OrderDetail ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc
SELECT *
FROM OPENXML (@hdoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
이때 Order 노드 의 각종 값 을 얻 으 려 면다음 방법 을 사용 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Android] 둥글게 펼쳐지는 Ripple을, 바삭하게 구현간이적으로 터치 피드백이 없는 버튼이나 레이아웃, 탭 범위가 좁아져 버린 버튼 등에, 범위 밖으로 둥글게 퍼지는 Ripple로 탭감, 영역을 조금 늘립니다. 이런 느낌 (화질 나쁘고 미안해..) Ripple을 내고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.