|
![]() |
#1 |
Участник
|
Спасибо. Добавил респект.
|
|
![]() |
#2 |
Участник
|
![]()
Добавлю готовый тестовый джоб, для экономии времени желающим что-нибудь выгрузить в нетрадиционной кодировке из 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). |
![]() |
#3 |
Участник
|
![]()
Hi, Sorry for using English but my Russian is worse than elementary
![]() I would like to ask if it would be also possible to write to the file an Unicode sign 0x2028 (End of line) XML would always replace this sign as well as new line sign '\n' with the 0x00 What need to be done in order to be able to write 0x2028 directly to the file. Is it possible? We are still using AX 3.0 (I know that in DAX 4 it is possible by using TextIO class) Any clues? Thanks! |
|
Теги |
unicode, xml, кодировка, ax3.0 |
|
|