Цитата:
Сообщение от
mazzy
интересная мысль!
там, конечно, regexp заколебешься писать.
но мысль "свести к поиску по xml" интересная. надо подумать. спасибо.
Не надо никаких регэкспов -
в Posh поддержка xml есть
X++:
Exportfile for AOT version 1.0 or later
Formatversion: 1
***Element: JOB
; Microsoft Dynamics AX Job: DEV_OurRuMenuItems unloaded
; --------------------------------------------------------------------------------
JOBVERSION 1
SOURCE #DEV_OurRuMenuItems
#static void DEV_OurRuMenuItems(Args _args)
#{
# CommaIo io = new CommaIo(@'D:\0\menuitems.csv', 'w');
# TreeNodeTraverser traverser = new TreeNodeTraverser(TreeNode::findNode('\Menu Items'));
# TreeNode node;
# container badcountries = ['BR', 'CN', 'IN', 'JP', 'TH', 'US', 'MX'];
# Label label = new Label('en-US');
# label rulabel = new label('ru-RU');
# str codes;
#
# boolean isGoodCountry(str _country)
# {
# return strLRTrim(_country) && !conFind(badcountries, strLRTrim(_country));
# }
# io.write('Path', 'Country', 'ViewUserLicense', 'MaintainUserLicense', 'Label', 'HelpText', 'Label.en', 'Help.en', 'Label.ru', 'Help.ru');
# node = traverser.next();
# while (node)
# {
#
# if (node.AOTgetPropertiesExt())
# {
# codes = node.AOTgetProperty("CountryRegionCodes");
# //if (strScan(codes, 'RU', 1, strLen(codes)))
# if (isGoodCountry(codes))
# {
# print node.treeNodePath();
# infolog.yield();
# io.write(node.treeNodePath(), codes,
# node.AOTgetProperty('ViewUserLicense'),
# node.AOTgetProperty('MaintainUserLicense'),
# node.AOTgetProperty('Label'),
# node.AOTgetProperty('HelpText'),
# label.extractString(node.AOTgetProperty('Label')),
# label.extractString(node.AOTgetProperty('HelpText')),
# rulabel.extractString(node.AOTgetProperty('Label')),
# rulabel.extractString(node.AOTgetProperty('HelpText')));
# }
# }
# node = traverser.next();
# }
# io = null;
# info('done');
#}
ENDSOURCE
PROPERTIES
Origin #{A555D6A7-3E58-453C-9E8C-95B1E333F1C3}
ENDPROPERTIES
***Element: END