如何使用XQuery更改XML结构
发布时间:2020-12-16 23:07:26 所属栏目:百科 来源:网络整理
导读:我有一个包含Employees Name的 XML文件和由他们完成的Job. XML文件的结构是 – EmployeeAAA@A#B#C#D/EmployeeEmployeeBBB@A#B#C#D/EmployeeEmployeeCCC@A#B#C#D/EmployeeEmployeeDDD@A#B#C#D/Employee 有成千上万的记录,我必须改变结构 – Employee NameAAA/
我有一个包含Employees Name的
XML文件和由他们完成的Job.
XML文件的结构是 – <Employee>AAA@A#B#C#D</Employee> <Employee>BBB@A#B#C#D</Employee> <Employee>CCC@A#B#C#D</Employee> <Employee>DDD@A#B#C#D</Employee> 有成千上万的记录,我必须改变结构 – <Employee> <Name>AAA</Name> <Jobs> <Job>A</Job> <Job>B</Job> <Job>C</Job> <Job>D</Job> </Jobs> </Employee> 如何在BaseX中使用XQuery完成此操作? 解决方法
3个XQuery函数,substring-before,substring-after和tokenize用于获取
所需的输出. substring-before用于获取Name. 类似地,substring-after用于获取Job部分. 然后,tokenize函数用于拆分作业. let $data := <E> <Employee>AAA@A#B#C#D</Employee> <Employee>BBB@A#B#C#D</Employee> <Employee>CCC@A#B#C#D</Employee> <Employee>DDD@A#B#C#D</Employee> </E> for $x in $data/Employee return <Employee> {<Name>{substring-before($x,"@")}</Name>} {<Jobs>{ for $tag in tokenize(substring-after($x,"@"),'#') return <Job>{$tag}</Job> }</Jobs> }</Employee> HTH … (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |