![]() |
#3 |
Участник
|
![]()
Добавлю готовый тестовый джоб, для экономии времени желающим что-нибудь выгрузить в нетрадиционной кодировке из Ax 3.0
Задача - выгрузить набор текстовых строк из аксапты в файл нужной кодировки. кодировка указывается в define, в моём случае это ISO-8859-5 (ключевые слова UTF-8, UTF-16 и прочий unicode) X++: #define.FILE('FILE') #define.LINE('LINE') #define.codePage('ISO-8859-5') #define.fileFullName(@'D:\testXML_ISO.txt') static void Test_XML2ISO(Args _args) { XMLDocument doc = XMLDocument::newBlank(); XMLElement file = doc.createElement(#FILE); XMLElement line; int i; str xslt = ' <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> '+ ' <xsl:output omit-xml-declaration="no" method="text" media-type="text/xml" '+ ' indent="no" encoding="'+#codePage+'" /> '+ ' <xsl:template match="'+#LINE+'"> '+ ' <xsl:apply-templates/> '+ ' <xsl:if test="following-sibling::node()"> '+ ' <xsl:text>XXX</xsl:text> '+ ' </xsl:if> '+ ' </xsl:template> '+ ' </xsl:stylesheet> '; void outputXML(XMLDocument _xml) { COM outputStream; XMLDocument xsl = XMLDocument::newXML(xslt); ; outputStream = new COM('ADODB.Stream'); outputStream.type(1); // binary outputStream.open(); _xml.com().transformNodeToObject(xsl.com(), outputStream); outputStream.saveToFile(#fileFullName); outputStream.close(); } ; if (WinAPI::fileExists(#fileFullName)) WinAPI::deleteFile(#fileFullName); doc.appendChild(file); for (i=1; i<=10; i++) { line = doc.createElement(#LINE); line.appendChild(doc.createTextNode(strFmt('line %1 ABCDE АБВГДЕЖЗИКабвгдежзик', i))); file.appendChild(line); } outputXML(doc); info('Готово'); } _;" без кавычек и подчёркивания Также выражаю признательность и большую спасибу EVGL и belugin за полезные подсказки ![]() Последний раз редактировалось zinius; 25.09.2008 в 17:46. |
|
|
За это сообщение автора поблагодарили: d_alexe (1). |
Теги |
unicode, xml, кодировка, ax3.0 |
|
|