APEX18中apex_data_parser.parse的p_row_selector参数设置咨询
在APEX 18中解析XML并将子标签拆分为独立列的解决方案
可以实现将子标签拆分为独立列的需求,核心是精准设置p_row_selector参数,使其指向每个包含目标子标签的独立数据行节点,具体操作如下:
1. 匹配XML结构调整路径
假设你的XML结构类似(需对应实际结构修改节点名):
return (<Document> <group_1> <group_1_2> <DataItem> <Id>1001</Id> <Acct>USR0001</Acct> <Ownr>Alice</Ownr> <Bal>5000</Bal> </DataItem> <DataItem> <Id>1002</Id> <Acct>USR0002</Acct> <Ownr>Bob</Ownr> <Bal>3000</Bal> </DataItem> </group_1_2> </group_1> </Document> )
2. 正确设置p_row_selector
将p_row_selector设置为指向单个数据行的父节点(例中为/Document/group_1/group_1_2/DataItem),这样每个DataItem节点会被解析为一行,其下的Id、Acct、Ownr、Bal子标签会自动生成独立列。
3. 完整查询示例
SELECT * FROM TABLE(apex_data_parser.parse( p_content => (SELECT blob_content FROM apex_application_files WHERE name = :P1_NEW), p_file_type => apex_data_parser.c_file_type_xml, p_row_selector => '/Document/group_1/group_1_2/DataItem' ));
关键注意事项
- 若
group_1_2下直接重复出现包含目标字段的节点(无统一父节点),可将p_row_selector设为/Document/group_1/group_1_2/*,但需确保所有子节点结构完全一致。 - 必须保证
p_row_selector路径精确到单个数据行的节点层级,不要直接选择group_1_2节点,否则所有子标签会被合并为一行的多个字段,无法拆分为多行独立数据。
内容的提问来源于stack exchange,提问作者Oguen
相关产品推荐
相关产品推荐

