json - 如何将文本节点转换为对象节点以添加子节点
问题描述
我正在使用 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 文档节点的一种有效方法是用您的构造更新/替换 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);
推荐阅读
- structr - 观察挂载的文件夹并整合新文件
- java - 如何使用 Selenium ChromeDriver Java 实现单击“复制”参考
- python - Pandas 滚动窗口必须是 int
- node.js - 如何将用户输入日期与 mongodb ISODate 对象进行比较
- django - 如何为创建和列出使用相同的嵌套序列化程序
- opencv - 关于使用 opencv 阅读视频的问题
- python - 使用 github 实现 Python
- javascript - React - SetState 处理程序方法
- docker - 在docker(linux)中运行时.net core xslt转换EntryPointNotFoundException
- angular - 如何在角度 7 中动态显示表格的行数据