Closed serdar closed 4 years ago
Please see: https://github.com/oozcitak/xmlbuilder-js/wiki/Conversion-From-Object#arrays
Basically you need something like:
var obj = {
BACSDocument: {
'@xmlns:xsi':'http://www.w3.org/2001/XMLSchema-instance',
'@xsi:noNamespaceSchemaLocation': 'newbacs-advices.xsd',
Data: {
ARUDD: {
Header:{
'@reportType':'xxx',
'@adviceNumber':'xxx',
'@currentProcessingDate':'xxx',
},
AddresseeInformation: {
'@name': 'xxx'
},
ServiceLicenseInformation: {
'@userName': 'xxx',
'@userNumber': 'xxx'
},
Advice: {
OriginatingAccountRecords: {
OriginatingAccountRecord: {
OriginatingAccount: {
ReturnedDebitItem: [42, 42, 42]
}
}
}
}
}
}
}
};
var root = builder.begin().ele(obj).end({pretty: true});
Thanks Ozgur! It set me on the right path, I ended up doing the following:
Advice: {
OriginatingAccountRecords: {
OriginatingAccountRecord: {
OriginatingAccount: {},
ReturnedDebitItem: getReturnedDebitItems()
}
}
}
function getReturnedDebitItems(){
return [
{ "@ref": "a", "@code": "b", PayerAccount: {'@number': 123} },
{ "@ref": "a", "@code": "b", PayerAccount: {'@number': 123} },
{ "@ref": "c", "@code": "b", PayerAccount: {'@number': 123} }
];
}
Resulting in:
<Advice>
<OriginatingAccountRecords>
<OriginatingAccountRecord>
<OriginatingAccount/>
<test/>
<test/>
<test/>
<test2/>
<ReturnedDebitItem ref="a" code="b">
<PayerAccount number="123"/>
</ReturnedDebitItem>
<ReturnedDebitItem ref="a" code="b">
<PayerAccount number="123"/>
</ReturnedDebitItem>
<ReturnedDebitItem ref="c" code="b">
<PayerAccount number="123"/>
</ReturnedDebitItem>
</OriginatingAccountRecord>
</OriginatingAccountRecords>
</Advice>
I also found using XPath to find the nodes and then inserting elements also works
var nodes = xpath.select('//OriginatingAccount', root);
nodes[0].insertAfter("test2")
nodes[0].insertAfter("test")
nodes[0].insertAfter("test")
nodes[0].insertAfter("test")
Hello, I have a medium sized XML document that I'm trying to generate using xmlbuilder, however I'm stuck on how to construct the repeating
ReturnedDebitItem
elements. Is there a way to XPath to theOriginatingAccountRecord
element and then insert the required elements?