2017-02-21 155 views
0

我想讀XML文件和大容量複製到數據庫讀取XML文件來使用C#asp.net

我的XML就像是數據表:

<products> 
    <product> 
     <id>1</id> 
     <name>product one</name> 
     <subproducts> 
     <subproduct> 
      <color>Red</color> 
      <stock>1</stock> 
     </subproduct> 
     <subproduct> 
      <color>Green</color> 
      <stock>2</stock> 
     </subproduct> 
     </subproducts> 
     <images> 
     <image>http://qwqeq.com</image> 
     <image>http://asdasd.com</image> 
     </images> 
    </product> 
</products> 

我希望得到三個數據表這對於產品,子產品和圖像,並嘗試批量插入數據庫。

我該如何實現這一目標?

+0

到目前爲止您有試過什麼嗎? – jjj

+0

是的,我嘗試使用數據集ReadXml方法,但它給了我6數據表,我不知道如何使用。這些產品是產品副產品副產品圖像圖像。我需要三個相互關聯的數據表。 – Can

回答

0

你已經嘗試必須是類似下面的方式,

DataSet objDataSet = new DataSet(); 
objDataSet.ReadXml("FilePath.xml"); 

它只是分組的節點,形成表。

你需要做一些在下面的鏈接中解釋得很好。

http://csharp.net-informations.com/xml/how-to-read-xml.htm

希望這有助於!

0

您可以通過XML轉換成存儲過程作爲XML參數和shredd它有:

DECLARE @xml XML= 
N'<products> 
    <product> 
     <id>1</id> 
     <name>product one</name> 
     <subproducts> 
     <subproduct> 
      <color>Red</color> 
      <stock>1</stock> 
     </subproduct> 
     <subproduct> 
      <color>Green</color> 
      <stock>2</stock> 
     </subproduct> 
     </subproducts> 
     <images> 
     <image>http://qwqeq.com</image> 
     <image>http://asdasd.com</image> 
     </images> 
    </product> 
</products>'; 

SELECT p.value(N'id[1]',N'int') AS productID 
     ,p.value(N'name[1]',N'nvarchar(max)') AS productName 
     ,sp.value(N'color[1]','nvarchar(max)') AS subproductColor 
     ,sp.value(N'stock[1]','int') AS subproductStock 
     ,img.value(N'image[1]',N'nvarchar(max)') AS imageURL 
--INTO #tmpTbl 
FROM @xml.nodes(N'/products/product') AS A(p) 
OUTER APPLY p.nodes(N'subproducts/subproduct') AS B(sp) 
OUTER APPLY p.nodes(N'images') AS C(img) 

結果

productID productName subproductColor subproductStock imageURL 
1   product one Red    1    http://qwqeq.com 
1   product one Green    2    http://qwqeq.com 

使用SELECT ... INTO #tmpTbl的結果寫入到一個臨時表。然後使用SELECT DISTINCT ... FROM #tmpTbl來檢索插入到最終結構中的值。