我在Axapta中有一个函数如下:
static client XMLDocument GetXmlData()
{
XMLDocument xmlReturnDoc = new XMLDocument();
// Build XML Document
return xmlReturnDoc;
}
这将返回一个XML文档。然后我使用业务连接器从.NET程序中调用它,如下所示:
Axapta ax;
object o;
ax = new Axapta();
ax.Logon(null, null, null, null);
o = ax.CallStaticClassMethod(“MyClass”, “GetXmlData”);
但是,我似乎无法将其转换为.NET中的System.Xml.XmlDocument。有没有办法做到这一点,还是我需要返回一个字符串并重新加载文件?
答案 0 :(得分:1)
AX XMLDocument
与CLR System.Xml.XmlDocument
不同。
对象类型之间没有自动转换。 原始类型有一些隐式转换,但只有一种方式。 请参阅How to: Marshal Between X++ and CLR Primitive Types。
阅读How to: Call Business Logic Using .NET Business Connector毫无疑问,简单的方法是返回XML字符串。
答案 1 :(得分:0)
恕我直言,您可以将正确的类型传递给Ax
void netGetXmlData(System.Xml.XmlDocument netXml)
{
XMLDocument xmlDoc = GetXmlData();
netXml.set_InnerText(xmlDoc.text());
}
并从CLR调用此AX方法:
ax.CallStaticClassMethod(“MyClass”, “GetXmlData”, xmlDoc);
AX与CLR数据类型一起正常工作 - 您可以在AX端生成.NET XML文档。