Возвращение XMLDocument из Ax2009
У меня есть функция в 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”);
Тем не менее, я не могу преобразовать это в System.Xml.XmlDocument в.NET. Есть ли способ сделать это, или мне нужно вернуть строку и перезагрузить документ?
2 ответа
AX XMLDocument
это не тот же зверь, что и CLR System.Xml.XmlDocument
,
Там нет автоматического преобразования между типами объектов. Есть некоторые неявные преобразования примитивных типов, но только один путь. См. Как: маршал между примитивными типами X++ и CLR.
Как читать : вызывать бизнес-логику Использование.NET Business Connector не оставляет сомнений в том, что самый простой способ - вернуть строку XML.
ИМХО, вы можете передать правильный тип в Axe
void netGetXmlData(System.Xml.XmlDocument netXml)
{
XMLDocument xmlDoc = GetXmlData();
netXml.set_InnerText(xmlDoc.text());
}
и вызвать этот метод AX из CLR:
ax.CallStaticClassMethod(“MyClass”, “GetXmlData”, xmlDoc);
AX корректно работает с типами данных CLR - вы можете генерировать NET XML документ на стороне AX.