Возвращение 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.

Другие вопросы по тегам