使用mlcp导入MarkLogic时,能否修改XML结构并新增字段?
如何在MLCP导入MarkLogic时通过XQuery新增XML字段?
完全可以实现,MLCP(MarkLogic Content Pump)支持在导入过程中通过指定XQuery转换模块,对文档进行实时修改。
步骤1:编写XQuery转换模块
创建一个XQuery文件(比如add-role.xqy),功能是给输入的XML文档添加指定字段:
xquery version "1.0-ml"; declare variable $content as document-node() external; <!-- 为原XML片段添加根节点并插入role字段 --> element employee { $content/node(), <role>developer</role> }
注:原示例XML是无单个根节点的片段,MarkLogic要求XML文档必须有唯一根元素,因此转换时需将所有节点包裹在一个根元素中(如<employee>);如果你的原始XML已有根节点,可直接在根节点下追加字段,示例如下:
xquery version "1.0-ml"; declare variable $content as document-node() external; copy $doc := $content modify insert node <role>developer</role> as last into $doc/* return $doc
步骤2:执行MLCP导入命令
使用MLCP的-transform_module参数指定上述转换模块,执行导入:
mlcp import \ -host localhost \ -port 8000 \ -username your-username \ -password your-password \ -mode local \ -input_file_path /path/to/your/xml-files \ -transform_module /path/to/add-role.xqy \ -transform_namespace "http://marklogic.com/mlcp/transform"
转换效果
原始XML:
<name>rashmita</name> <employeeType>regular</employeeType>
转换后导入到MarkLogic的XML:
<employee> <name>rashmita</name> <employeeType>regular</employeeType> <role>developer</role> </employee>
内容的提问来源于stack exchange,提问作者Rashmita Purkayastha
相关产品推荐
相关产品推荐

