Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用分析管理对象(AMO)将xmla文件反序列化为对象_C#_Ssas - Fatal编程技术网

C# 使用分析管理对象(AMO)将xmla文件反序列化为对象

C# 使用分析管理对象(AMO)将xmla文件反序列化为对象,c#,ssas,C#,Ssas,我想将包含数据库对象的xmla文件反序列化为其正确的对象表示形式。(我不知道它是否应该是一个数据库)。因此,我做了以下工作: Database db = new Database(); XmlTextReader xmlread = new XmlTextReader("input.xmla"); Microsoft.AnalysisServices.Utils.Deserialize(xmlread, db); xmlread.Close(); 但我得到了以下错误: Unhandled Ex

我想将包含数据库对象的xmla文件反序列化为其正确的对象表示形式。(我不知道它是否应该是一个数据库)。因此,我做了以下工作:

Database db = new Database();
XmlTextReader xmlread = new XmlTextReader("input.xmla");
Microsoft.AnalysisServices.Utils.Deserialize(xmlread, db);
xmlread.Close();
但我得到了以下错误:

Unhandled Exception: Microsoft.AnalysisServices.XmlSerializationException: Unexpected root 'Create' (namespace 'http://schemas.microsoft.com/analysisservices/2003/engine') when trying to read 'Microsoft.AnalysisServices.Database'.
  at Microsoft.AnalysisServices.DesignXmlReader.ReadRoot (System.Type type) [0x00000] in <filename unknown>:0 
  at Microsoft.AnalysisServices.DesignXmlReader.DeserializeComponent (IDesignerSerializationManager manager, System.Xml.XmlReader reader, System.Type root) [0x00000] in <filename unknown>:0 
  at Microsoft.AnalysisServices.JaXmlSerializer.DeserializeComponent (IDesignerSerializationManager manager, System.Xml.XmlReader reader, System.Type root) [0x00000] in <filename unknown>:0 
  at Microsoft.AnalysisServices.Utils.Deserialize (System.Xml.XmlReader xmlReader, Microsoft.AnalysisServices.MajorObject obj) [0x00000] in <filename unknown>:0 
未处理的异常:Microsoft.AnalysisServices.XmlSerializationException:意外的根“创建”(命名空间)http://schemas.microsoft.com/analysisservices/2003/engine“)尝试读取“Microsoft.AnalysisServices.Database”时。
位于:0中的Microsoft.AnalysisServices.DesignXmlReader.ReadRoot(System.Type类型)[0x00000]
在Microsoft.AnalysisServices.DesignXmlReader.DeserializeComponent(IDesignerSerializationManager管理器,System.Xml.XmlReader,System.Type root)[0x00000]中:0
位于Microsoft.AnalysisServices.JaXmlSerializer.DeserializeComponent(IDesignerSerializationManager管理器、System.Xml.XmlReader、System.Type root)[0x00000]中:0
在Microsoft.AnalysisServices.Utils.Deserialize(System.Xml.XmlReader XmlReader,Microsoft.AnalysisServices.MajorObject obj)[0x00000]中:0
input.xmla文件如下所示:

<Create xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <ObjectDefinition>
         <Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200">
             <ID>100</ID>
             <Name>Deserialized</Name>
             <Description>Deserialized Description</Description>
        </Database>
    </ObjectDefinition>
</Create>

100
行化
反序列化描述

我找不到一个好的例子。任何帮助都将不胜感激。

问题是,您正在尝试反序列化包含“CREATE”命令的xmla文档,而不仅仅是序列化的数据库对象。如果只有一个xml读取器位于数据库节点上,它应该可以工作

考虑xml名称空间
http://schemas.microsoft.com/analysisservices/2003/engine
@L.B,我对c#、amo和反序列化非常缺乏经验,请您解释一下好吗?对不起,Faruk,我从未使用过
Microsoft.AnalysisServices.Utils
,但应该有办法在库中设置名称空间。也许你可以使用
xmlread.NameTable.Add
我试过
xmlread.NameTable.Add(“http://schemas.microsoft.com/analysisservices/2003/engine");它不起作用,仍然是相同的问题是的,这是正确的,而且我必须移动
xmlns=”http://schemas.microsoft.com/analysisservices/2003/engine“
将命名空间添加到xmla文件上的数据库节点。是否可以在xmla文件中以编程方式添加此选项?