如何将文本节点转换为对象节点以添加子节点
How to convert text node into object node to add a child node
我正在使用 Javascript 和 JSON 文件。我正在尝试创建一个子节点并向该节点插入一个值
基本设置是:
declareUpdate();
xdmp.documentInsert("/example.json",
{"a":"aa","b":"bb"});
我想看到的是 a 或 b 中带有一些数据的子节点。
declareUpdate(); var doc = cts.doc("/example.json"); var docObj = doc.toObject(); docObj. = "this is a much different value"; xdmp.nodeInsertChild(cts.doc("/example.json").xpath("/a"), docObj);
[javascript] XDMP-CHILDNODEKIND: xdmp.nodeInsertChild(Sequence(xdmp.unpath("fn:doc('/foo.json')/text('foo')")), Text("this is a child node value")) -- text nodes cannot have text node children
该错误提示您尝试添加 JSON 属性 作为文档节点的直接子节点。 MarkLogic 对象节点不能有文档节点子节点。
更新 JSON 文档节点的一种有效方法是使用您的构造 update/replace JavaScript 对象节点。 (注意:不能直接在MarkLogic JSON节点中插入文本表达式,而是插入命名节点。)
如果想要的结果类似于
{
"a": {
"a1": "aa",
"a2": "new child node"
},
"b": "bb"
}
,然后简单地应用一个节点替换:
declareUpdate();
const doc = cts.doc("/example.json");
const newNode = { "a1":"aa", "a2":"new child node" };
xdmp.nodeReplace(doc.xpath("/a"), newNode);
我正在使用 Javascript 和 JSON 文件。我正在尝试创建一个子节点并向该节点插入一个值
基本设置是:
declareUpdate();
xdmp.documentInsert("/example.json",
{"a":"aa","b":"bb"});
我想看到的是 a 或 b 中带有一些数据的子节点。
declareUpdate(); var doc = cts.doc("/example.json"); var docObj = doc.toObject(); docObj. = "this is a much different value"; xdmp.nodeInsertChild(cts.doc("/example.json").xpath("/a"), docObj);
[javascript] XDMP-CHILDNODEKIND: xdmp.nodeInsertChild(Sequence(xdmp.unpath("fn:doc('/foo.json')/text('foo')")), Text("this is a child node value")) -- text nodes cannot have text node children
该错误提示您尝试添加 JSON 属性 作为文档节点的直接子节点。 MarkLogic 对象节点不能有文档节点子节点。
更新 JSON 文档节点的一种有效方法是使用您的构造 update/replace JavaScript 对象节点。 (注意:不能直接在MarkLogic JSON节点中插入文本表达式,而是插入命名节点。)
如果想要的结果类似于
{
"a": {
"a1": "aa",
"a2": "new child node"
},
"b": "bb"
}
,然后简单地应用一个节点替换:
declareUpdate();
const doc = cts.doc("/example.json");
const newNode = { "a1":"aa", "a2":"new child node" };
xdmp.nodeReplace(doc.xpath("/a"), newNode);