2015-05-04 63 views
0

我正在使用dataset.readxml从xml填充数据集,如下所示。继承其名称空间的嵌套表不能在不同名称空间中使用多个父表

ds.ReadXml("C:\\Data\\mytestdesigndata.xml");  

但是我得到一个异常,说:

嵌套表“分支”它继承其命名空间中不能有不同的命名空间

多个父表中的XML数据如下

<ASchema> 
    <A:Data DBREF="=24140/157" xmlns:A="http://www.test.com/xml/a"> 
    <B:BRANCH DBREF="=24140/158"> 
    </B:BRANCH> 
    </A:Data> 
    <A:TEST DBREF="=24174/138" xmlns:A="http://www.test.com/xml/a"> 
    <B:BRANCH DBREF="=24174/139" > 
    </B:BRANCH> 
    </A:TEST> 
</ASchema> 

我知道问题出在B:BRANCH映射到A:DataA:TEST

我无法控制数据。我怎样才能解决问题,并仍然在我的C#应用​​程序中获取数据集?

回答

4

下面的代码使用正则表达式从XML中删除所有名称空间。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data; 
using System.IO; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      string input = File.ReadAllText(FILENAME); 
      string pattern = @"(</?)(\w+:)"; 

      string output = Regex.Replace(input, pattern, "$1"); 

      StringReader reader = new StringReader(output); 
      DataSet ds = new DataSet(); 
      ds.ReadXml(reader); 
     } 
    } 
} 
​ 
+0

这是一个顶级的解决方案,它绝对奏效。感谢那。我有一个怀疑,将使命名空间的变化导致数据来不同? – battech

+0

不符合您提供的样本数据。 – jdweng

相关问题