我有一个包含Employees Name的
XML文件和由他们完成的Job.
XML文件的结构是 –
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 …
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。