2008-10-29 50 views
0

我正在使用ReadXml方法將數據從XML文件加載到DataSet中。這導致兩個表具有相同的名稱。其中一個表有一個命名空間,另一個沒有。我試圖用名字空間引用表。誰能告訴我如何做到這一點?如何在引用數據集中的表時指定名稱空間

Dim reader As XmlTextReader = New XmlTextReader(strURL) 
    Dim city as string = "" 
    Dim ds As DataSet = New DataSet() 
    ds.Namespace = "HomeAddress" 

    ds.ReadXml(reader)   
    city = ds.Tables("Address").Rows(0).Item(2).ToString() 

回答

0

我找到了答案。您可以傳入命名空間作爲第二個參數。我想我沒有注意到Intellisense中這個特殊的過載。

ds.Tables("Address", "HomeAddress").Rows(1).Item(2).ToString() 
0

從MSDN:DataSet.Namespace

的命名空間屬性時使用 讀寫XML文檔 到使用的ReadXml, 中WriteXML,ReadXmlSchema,或 WriteXmlSchema方法數據集。

XML文檔的名稱空間是 ,用於在讀入DataSet時限定XML屬性和 元素。對於 例如,如果數據集包含 模式,它是從與命名空間的文檔 讀「myCompany中,」和 嘗試僅從 有不同的命名空間的文檔,一點不 任何數據讀取數據對應於 現有模式將被忽略。

以下示例在調用ReadXml方法之前設置前綴 。

private void ReadData(DataSet thisDataSet) 
{ 
    thisDataSet.Namespace = "CorporationA"; 
    thisDataSet.Prefix = "DivisionA"; 

    // Read schema and data. 
    string fileName = "CorporationA_Schema.xml"; 
    thisDataSet.ReadXmlSchema(fileName); 
    fileName = "DivisionA_Report.xml"; 
    thisDataSet.ReadXml(fileName); 
} 

我無法從你給的例子看,但除非你設置加載之前,你的前綴,你將無法讀取並不符合現有的架構數據。

+1

所以,你是說名稱空間是爲了與架構一起使用? 如果我將XML文件轉儲到數據集中,它將根據XML層次結構自動創建表。只是碰巧有兩個名稱相同的元素,並且在嘗試按名稱引用它們時出現錯誤。 – Kosta 2008-11-04 20:35:40

相關問題