xdmp.nodeReplace( old as Node, new as Node ) as null
Replaces a node.
Parameters | |
---|---|
old | The old node, to be replaced. |
new | The new node. |
If the caller of the function uses function mapping and $old
is an empty sequence, the node-replace
function may return an
empty sequence. It will not return an error.
// assume /foo.json is {"foo":"some value"} declareUpdate(); var doc = cts.doc("/foo.json"); var docObj = doc.toObject(); docObj.foo = "this is a different value"; xdmp.nodeReplace(doc, docObj); // now /foo.json will look like: {"foo":"this is a different value"}
// create an XML document declareUpdate(); xdmp.documentInsert("/example.xml", fn.head(xdmp.unquote( '<a><b>bbb</b></a>'))); ****** // replace the b node with a c node declareUpdate(); var n = new NodeBuilder(); // create a <c>ccc</c> node node = n.addElement("c", "ccc").toNode(); xdmp.nodeReplace(cts.doc("/example.xml").xpath("/a/b"), node); ****** // look at the new document cts.doc("/example.xml"); => <?xml version="1.0" encoding="UTF-8"?> <a><c>ccc</c></a>
// This example shows how to update the root // node of a text format document. Start by // creating a text document. declareUpdate(); var n = new NodeBuilder(); node = n.addText("This is a line of text.").toNode(); xdmp.documentInsert("/mydir/doc.txt", node); ****** // Update the text node of the text document // by appending another line of text to the // text node. Note that the text node is the // root node of a text document. declareUpdate(); var newText = fn.concat(cts.doc("/mydir/doc.txt"), "\n\ This is another line of text."); var n = new NodeBuilder(); node = n.addText(newText).toNode(); xdmp.nodeReplace(cts.doc("/mydir/doc.txt").xpath("/text()"), node); ***** // look at the updated document cts.doc("/mydir/doc.txt") => This is a line of text. This is another line of text.
// create a document declareUpdate(); xdmp.documentInsert("/foo.json", {"foo":"this is a value"}); ****** // replace the value using xdmp.nodeReplace declareUpdate(); var n = new NodeBuilder(); node = n.addText("this is a different value").toNode(); xdmp.nodeReplace(cts.doc("/foo.json").xpath("/foo"), node); ****** // show the new doc cts.doc("/foo.json"); => {"foo":"this is a different value"}