我正在尝试读取和迭代巨大的xml的信息并尝试转换为json并将其发送到前端。响应XML中有许多子元素和子子元素。我想迭代一个孩子的值" Node"及其子节点并转换为JSON并将其发送到前端以将其转换为excel。目前,我可以通过使用嵌套的for循环来实现这一点。然而,随着子子数的增加,for循环也增加。
for(X s:a){
for(A a: B){
for(B b:C){
}
}
}
还有其他方法可以编写更干净的代码吗?
答案 0 :(得分:0)
您可以使用递归。伪代码:
void getAllChildren(StackOfChildren stack, Node node) {
if(node.hasChildNode)
getAllChildren(stack, node);
stack.add(node);
}
答案 1 :(得分:0)
如果你知道你的根元素,那么从它开始并检查它的子元素是否存在,如果存在则迭代它.Below可能是你读取XML文件的算法。
Query Result
[
{ paymentGateway: 'Paystack', count: '3966' },
{ paymentGateway: 'PAGA', count: '3954' },
{ paymentGateway: 'Flutterwave', count: '3995' },
{ paymentGateway: 'Interswitch', count: '4118' },
{ paymentGateway: 'NIBSS', count: '3968' }
]
您可以递归调用每个元素来获取其子元素,不需要内部for或while循环。
答案 2 :(得分:0)
也许这并没有使用正确的工具。
您是否尝试过使用XSLT?这允许通过声明转换规则将XML转换为其他任何内容。 但是,它依赖于DOM(文档对象模型)并将整个文件加载到内存中。
或者,您可以使用SAX(XML的简单API),它不会立即加载整个文档。
其他替代方案也存在,比如StAX,我认为这种方式更有效。