|
29.08.2012, 16:37 | #1 |
Участник
|
XML import . Axapta 3.0
Здраствуйте,
Первые шаги с импортом XML ... :-) . Никак немогу найти в чем проблема, работая с XMLDocument классой . Проблема в том , что заказ имеет cart, в нем несколько товаров <product> . XML здесь - http://ut.impegno.lt/lt/shop/importer/export-orders Мой исходник : X++: XMLDocument doc; XMLNode rootNode; XMLNode delivNode, custNode, compNode, ordLineNode, prodLNode, cartNode, prodNodes; XMLNodeList salesLines, orderLines, prodNode; XMLNodeListIterator it; XMLParseError xmlError; SalesId cOrd; ItemId cItm; InventQty nQty; SalesPrice nPrc; ConfigId cCnf; ContManage aCart; Str cVeniPak, cNote, cSkuVar; Str cUserName, cUserLName, cUserPhone, cUserEMail, cUserCity, cUserAdr, cUserHNum; Str cCompName, cCompCode, cCompVat, cCompPhone, cCompFax, cCompAdr; Real nDelivPrice; int ord, u, crt, lCompany, n1, n2, zz; doc = new XMLDocument(); doc.async( false ); doc.load( "c:\\\\WuTemp\\export-orders.xml" ); xmlError = doc.parseError(); if ( xmlError && xmlError.errorCode() != 0 ) throw error( strfmt( "XML failo klaida : %1", xmlError.reason() ) ); rootNode = doc.documentElement(); orderLines = rootNode.selectNodes( "//order" ); for ( ord = 0; ord < orderLines.length(); ord ++ ) { aCart = new ContManage(); ordLineNode = orderLines.item( ord ); cOrd = ordLineNode.selectSingleNode("id").text(); nDelivPrice = str2num( ordLineNode.selectSingleNode( "deliveryPrice" ).text() ); cNote = ordLineNode.selectSingleNode( "comment" ).text(); delivNode = ordLineNode.selectSingleNode("//delivery"); custNode = delivNode.selectSingleNode("//address"); cUserName = custNode.selectSingleNode( "firstname" ).text(); cUserLName = custNode.selectSingleNode( "lastname" ).text(); cUserPhone = custNode.selectSingleNode( "phone" ).text(); cUserEMail = custNode.selectSingleNode( "email" ).text(); cUserCity = custNode.selectSingleNode( "city" ).text(); cUserAdr = custNode.selectSingleNode( "address" ).text(); cUserHNum = custNode.selectSingleNode( "houseNumber" ).text(); //cartNode = ordLineNode.selectSingleNode( "//cart" ); //prodNodes = cartNode.selectSingleNode( "//products" ); // prodNode = prodNodes.selectNodes( "//product" ); // пробывал разные версии ... prodNode = ordLineNode.selectNodes( "//product" ); for ( u = 0; u < prodNode.length(); u ++ ) { prodLNode = prodNode.item( u ); nQty = str2num( prodLNode.selectSingleNode( "quantity" ).text() ); cSkuVar = prodLNode.selectSingleNode( "variation" ).text(); cItm = prodLNode.selectSingleNode( "sku" ).text(); nPrc = str2num( prodLNode.selectSingleNode( "price" ).text() ); n1 = strscan( cSkuVar, "_", 1, 100 ); n2 = strscan( cSkuVar, "_", n1 + 1, 100 ); cCnf = substr( cSkuVar, n1 + 1, n2 - n1 ); aCart.ContAdd( [ cOrd, cItm, cCnf, nQty, nPrc ] ); } } С уважением , Римантас |
|
29.08.2012, 18:12 | #2 |
Участник
|
Цитата:
Попробуйте в шаблон добавить точку, т.е. сделать так ordLineNode.selectNodes(".//product")
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: gl00mie (2), alex55 (1). |
30.08.2012, 09:17 | #3 |
Участник
|
Цитата:
С уважением, Римантас |
|