javascript - 在 MarkLogic Javascript 中删除重复的元素父名称
问题描述
我正在使用 javascript 协调 MarkLogic 中的数据。目前,对于我的输出,我能够显示所有子元素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;
解决方案
不是 Javascript 专家,但如果您使用另一个根元素包装您的输入,然后在 Qconsole 上运行以下 xquery 代码,您将获得所需的结果。
`
let $doc := <acts>
<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>
</acts>
return
<Activities datatype="array">
{
for $each in $doc/Activities/Activity
return $each
}
`
推荐阅读
- html - Bootstrap Grid Layout 在 Extra Small 上显示 ComboBox 而不是多个按钮
- ios - 滚动到特定的标题视图
- c# - 如何从组合框中获取文本,如项目 [1]
- java - 如何将对象的特定字段映射到另一个对象?
- javascript - 在 Javascript 的 document.ready() 函数中未获取 Base64 编码数据
- java - 写入 JsonObjectRequest 中的布尔值
- angular - PrimeNG - TreeNodes [] 已填充但为空 TreeTable(Angular 6)
- python - 在 tensorflow 中修改预训练模型
- mongodb - monogdb 嵌套数组项完全匹配
- javascript - angulars HttpParams 对象的 set 和 append 方法有什么区别?