2012-09-21 90 views
1

我需要從SQL Server數據庫中加載一個表格,並提供一些來自xsd的數據。從xsd中讀取數據並將其加載到sql server表中的方法

我有我的XSD,與塊如下

<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> 

在我的桌子 - 美國,我有2列STATEID,Statename的。

我必須將數據(如state1,state2,..等)加載到表的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:簡單類型/ XSD:限制/ XSD:枚舉' 類型,然後我怎麼能從只有1個這樣的節點獲取數據。像我有xsd- ,我只需要從name ='States'獲取數據。 – user1668795

+0

啊!更新了我的答案。你可以在name屬性上添加過濾器來匹配「States」作爲....../xsd:smpleType [@ name =「States」]/...' – Vikdor

相關問題