1

我有一个通过 MarkLogic 中的 Javascript 生成的 XML 数据:

<Activities datatype="array">
	<Activity>
	  <ActivityCrewSize>10</ActivityCrewSize>
	  <ActivitySeqNo>1</ActivitySeqNo>
	  <ActivityDesc/>
	</Activity>
</Activities>

如何删除数据类型信息,使其看起来像这样:

<Activities>
	<Activity>
	  <ActivityCrewSize>10</ActivityCrewSize>
	  <ActivitySeqNo>1</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;

4

3 回答 3

1

您可以按名称删除属性

xmlDoc.getElementsByTagName("Activities")[0].removeAttribute('datatype');
<Activities datatype="array">
	<Activity>
	  <ActivityCrewSize>10</ActivityCrewSize>
	  <ActivitySeqNo>1</ActivitySeqNo>
	  <ActivityDesc/>
	</Activity>
</Activities>

于 2018-08-16T10:37:46.187 回答
0

Sequence.from通过使用MarkLogic中的函数转换数据,我能够删除数据类型信息。希望这可以帮助将来的任何人。

于 2018-09-10T02:32:21.823 回答
0

如果您需要它简短而简单,这可能会满足您的要求。

var _xml = '<Activities datatype="array"><Activity><ActivityCrewSize>10</ActivityCrewSize<ActivitySeqNo>1</ActivitySeqNo><ActivityDesc/></Activity></Activities>';

var _test = _xml.replace(/\sdatatype\=\".+\"/g,'');
alert(_test);

这将通配符从您的 XML 字符串中删除任何出现的 'datatype="(anything)"'。 https://jsfiddle.net/53817ofj/

如果您需要更复杂一点,您可能需要查看https://www.w3schools.com/xml/xml_parser.asp

于 2018-08-16T10:39:20.790 回答