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