我正在使用JavaScript协调Mark Logic中的数据。当前,对于我的输出,我能够显示所有子元素Activity
,但问题是父项Activities
也正在重复显示。
这是当前输出,其中<Activities>
仅在每个Activity
中出现:
<Activities datatype="array">
<Activity>
<ActivityCrewSize>10</ActivityCrewSize>
<ActivitySeqNo>1</ActivitySeqNo>
<ActivityDesc/>
</Activity>
</Activities>
<Activities datatype="array">
<Activity>
<ActivityCrewSize>23</ActivityCrewSize>
<ActivitySeqNo>2</ActivitySeqNo>
<ActivityDesc/>
</Activity>
</Activities>
<Activities datatype="array">
<Activity>
<ActivityCrewSize>50</ActivityCrewSize>
<ActivitySeqNo>3</ActivitySeqNo>
<ActivityDesc/>
</Activity>
</Activities>
这是我想要的输出,其中<Activities>
仅出现一次
<Activities datatype="array">
<Activity>
<ActivityCrewSize>10</ActivityCrewSize>
<ActivitySeqNo>1</ActivitySeqNo>
<ActivityDesc/>
</Activity>
<Activity>
<ActivityCrewSize>23</ActivityCrewSize>
<ActivitySeqNo>2</ActivitySeqNo>
<ActivityDesc/>
</Activity>
<Activity>
<ActivityCrewSize>50</ActivityCrewSize>
<ActivitySeqNo>3</ActivitySeqNo>
<ActivityDesc/>
</Activity>
</Activities>
以下是我当前输出的当前代码:
obj.Activities = [];
let act = {
'$type': 'Activity',
'$version': '0.0.1',
}
for (const item of activities) {
act.ActivityCrewSize = fn.normalizeSpace(hl.elementText(item, "CrewSize", true));
act.ActivitySeqNo = fn.normalizeSpace(hl.elementText(item, "SeqNo", true));
act.ActivityDesc = hl.elementText(item, null, true);
obj.Activities.push(act);
}
return obj;
答案 0 :(得分:0)
不是Java语言的人,但是如果您用另一个根元素包装您的输入,然后在Qconsole上运行以下xquery代码,则会得到所需的结果。
`
public void setSpecialTask(String... constructorArgs) {
setTask("SpecialTask", constructorArgs); // ERROR: 'setTask(java.lang.String...)' cannot be applied to '(java.lang.String, java.lang.String[])'
}
`
答案 1 :(得分:0)
如果为每个项目创建一个单独的JavaScript对象,会产生所需的结果吗?
类似的东西:
obj.Activities = [];
for (const item of activities) {
obj.Activities.push({
'$type': 'Activity',
'$version': '0.0.1',
ActivityCrewSize: fn.normalizeSpace(hl.elementText(item, "CrewSize", true)),
ActivitySeqNo, fn.normalizeSpace(hl.elementText(item, "SeqNo", true)),
ActivityDesc: hl.elementText(item, null, true)
});
}
return obj;
或者,NodeBuilder可以直接构造XML: