2012-09-21 2 views
1

제공된 xsd의 일부 데이터로 SQL 서버 데이터베이스에 내 테이블 중 하나를로드해야합니다.xsd에서 데이터를 읽고 SQL 서버 테이블에로드하는 방법

나는 나의 테이블에서

<xsd:simpleType name="States"> 
<xsd:restriction base="xsd:string"> 
<xsd:enumeration value="state1"/> 
<xsd:enumeration value="state2"/> 
<xsd:enumeration value="state3"/> 
</xsd:restriction> 
</xsd:simpleType> 

다음과 같은 블록 내 XSD가 - 미국, 나는 2 열 StateId, StateName 있습니다.

상태 1, 상태 2, .. 등의 데이터를 표의 StateName 열에로드해야합니다.

누군가가 이것을 수행하기 위해 어떤 방법을 사용해야한다고 제안 할 수 있습니까? 다음과 같이

답변

1

나는 그것을 할 것 :

DECLARE @xml XML 
-- Add the schema information and make the XML a valid XML document to parse. 
SELECT @xml = '<?xml version="1.0"?> 
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 
     <xsd:simpleType name="Countries"> 
      <xsd:restriction base="xsd:string"> 
       <xsd:enumeration value="Country1"/> 
       <xsd:enumeration value="Country2"/> 
       <xsd:enumeration value="Country3"/> 
      </xsd:restriction> 
     </xsd:simpleType> 
     <xsd:simpleType name="States"> 
      <xsd:restriction base="xsd:string"> 
       <xsd:enumeration value="state1"/> 
       <xsd:enumeration value="state2"/> 
       <xsd:enumeration value="state3"/> 
      </xsd:restriction> 
     </xsd:simpleType> 
    </xsd:schema>'; 

WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema' as xsd) 
SELECT 
    node.value('@value', 'nvarchar(32)') 
FROM 
    @xml.nodes('/xsd:schema/xsd:simpleType[@name="States"]/xsd:restriction/xsd:enumeration') AS enum(node) 
+0

감사 @Vikdor ..하지만 함께 많은 노드가있는 경우 '/ XSD : 스키마/XSD : 형 simpleType/XSD : 제한/XSD : 열거 형'유형, 다음을 어떻게 그런 노드에서 데이터를 얻을 수 있습니까? xsd : enumeration value = "country1"/> xsd : enumeration value = "state1"/> "xsd : enumeration value ="state1 "/> 그리고 name = 'States'에서만 데이터를 가져와야합니다. – user1668795

+0

아! 내 대답이 업데이트되었습니다. "States"를'.../xsd : smpleType [@ name = "States"]/...'와 일치하도록 name 속성에 필터를 추가합니다. – Vikdor

관련 문제