如何用XQuery将XML订单数据转换为表格?求入门指导
用XQuery将XML订单转换为逐行商品表格
针对你的需求,下面是直接可用的XQuery代码,能把XML中的每个客户的每件商品单独生成一行表格数据,完全替代手动处理4000条数据的工作:
生成HTML表格的XQuery代码
declare option output:method "html"; <table border="1"> <thead> <tr> <th>客户姓名</th> <th>支付方式</th> <th>订单号</th> <th>商品编码</th> <th>单价</th> <th>数量</th> </tr> </thead> <tbody> { for $item in //Item let $customer := $item/../../@Name let $payment_method := $item/../../@Method let $order_number := $item/../@Number let $item_code := $item/@Code let $price := $item/Price/text() let $quantity := substring-after($item/Details/text(), 'Quantity: ') return <tr> <td>{$customer}</td> <td>{$payment_method}</td> <td>{$order_number}</td> <td>{$item_code}</td> <td>{$price}</td> <td>{$quantity}</td> </tr> } </tbody> </table>
代码逻辑说明
- 遍历XML中所有
<Item>节点,每个商品对应一行 - 通过
../(父节点)和../../(祖父节点)定位到对应的<Order>和<Customer>,提取订单号、客户姓名、支付方式 - 直接读取商品的编码、单价,用
substring-after从<Details>中提取数量值 - 输出为带表头的HTML表格,可直接在浏览器打开或复制到表格工具中
如果需要导出为CSV格式(方便导入Excel)
可以用下面的代码生成CSV文本:
declare option output:method "text"; "客户姓名,支付方式,订单号,商品编码,单价,数量" { for $item in //Item let $customer := $item/../../@Name let $payment_method := $item/../../@Method let $order_number := $item/../@Number let $item_code := $item/@Code let $price := $item/Price/text() let $quantity := substring-after($item/Details/text(), 'Quantity: ') return concat('"', $customer, '","', $payment_method, '","', $order_number, '","', $item_code, '","', $price, '","', $quantity, '"', ' ') }
使用方法
找一款支持XQuery的工具(比如Saxon、BaseX),将你的XML文件作为输入,运行上述代码即可得到需要的表格数据。
内容的提问来源于stack exchange,提问作者Preston
相关产品推荐
相关产品推荐

