如何在引用数据集中的表时指定命名空间

时间:2008-10-29 16:32:58

标签: asp.net vb.net

我正在使用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()

2 个答案:

答案 0 :(得分:0)

来自MSDN:DataSet.Namespace

  

使用Namespace属性时   读写XML文档   使用ReadXml进入DataSet,   WriteXml,ReadXmlSchema或   WriteXmlSchema方法。

     

XML文档的命名空间是   用于范围XML属性和   读入DataSet时的元素。对于   例如,如果DataSet包含   从文档中读取的模式   使用名称空间“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 :(得分:0)

我找到了答案。您可以将命名空间作为第二个参数传递。我想我没有注意到Intellisense中的这种特殊过载。

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