Сбой, потому что ваш count
больше, чем количество элементов, возвращаемых tmp['Messages']['orderList']['order']
, поэтому он возвращает неопределенное значение. Короткий ответ: вам нужно добавить еще один order
узел к tmp['Messages']['orderList']
, прежде чем вы сможете получить к нему доступ. Трудно сказать, как лучше всего это сделать, не видя больше вашего кода, требований, исходящего шаблона и т. Д. c ... Чаще всего я сначала строю узел, а затем добавляю его с помощью appendChild.
Вот простой пример:
var tmp = <xml>
<Messages>
<orderList />
</Messages>
</xml>;
var prov = 12345;
var nextOrder = <order>
<provider>{prov}</provider>
</order>;
tmp.Messages.orderList.appendChild(nextOrder);
После чего tmp
будет выглядеть следующим образом:
<xml>
<Messages>
<orderList>
<order>
<provider>12345</provider>
</order>
</orderList>
</Messages>
</xml>
Технология, которую вы используете для работы с xml, называется e4x, и он работает на двигателе Mozilla Rhino Javascript. Вот пара ресурсов, которые могут вам помочь.
https://web.archive.org/web/20181120184304/https: //wso2.com/project/mashup/0.2/docs/e4xquickstart.html
https://developer.mozilla.org/en-US/docs/Archive/Web/E4X/Processing_XML_with_E4X