【问题标题】:read the XML type column using stored procedure使用存储过程读取 XML 类型列
【发布时间】:2017-04-06 19:42:54
【问题描述】:

如何使用存储过程从 XML TYPE 列显示父标签和属性?

示例:我在一个表的 XMLTYPE 列中有以下数据:

<Employee>
  <Employee_information >    
  <Employee_content>
    <task>
      <Employee_stem>
        <Employee_stem_paragraph>fsdbnfjksdflsdj.</Employee_stem_paragraph>
        <Employee_stem_paragraph>dsfsdfsdfsdf</Employee_stem_paragraph>
      </Employee_stem>    
      <Employee_response>
        <Employee_response_choices>    
          <Employee_choice_list>
            <Employee_block_choice numeric_identifier="1">              
            <Employee_choice_paragraph>sdfsdfsdfsdf</Employee_choice_paragraph>
            </Employee_block_choice>    
          </Employee_choice_list>   
       </Employee_response_choices>    
</Employee>

输出:显示其中的所有父标签和属性。

输出示例:

Employee,Employee_information,Employee_content,Employee_stem,Employee_stem_paragraph,Employee_response,Employee_response_choices,Employee_choice_list,Employee_block_choice, numeric_identifier,Employee_choice_paragraph。

【问题讨论】:

  • 查看数据。您缺少一些结束标签。

标签: oracle


【解决方案1】:

一般来说,你必须修复你的 xml。所有标签都必须关闭。 1-st select //*/name(.) - 仅提取元素的名称。 2-zh 选择'//*/name(@*) - 仅提取属性名称。

select *
  from xmltable('//*/name(.)'
                passing xmltype('<Employee>
  <Employee_information>
  <Employee_content>
    <task>
      <Employee_stem>
        <Employee_stem_paragraph>fsdbnfjksdflsdj.</Employee_stem_paragraph>
        <Employee_stem_paragraph>dsfsdfsdfsdf</Employee_stem_paragraph>
      </Employee_stem>    
      <Employee_response>
        <Employee_response_choices>    
          <Employee_choice_list>
            <Employee_block_choice numeric_identifier="1">              
            <Employee_choice_paragraph>sdfsdfsdfsdf</Employee_choice_paragraph>
            </Employee_block_choice>    
          </Employee_choice_list>   
       </Employee_response_choices>    
            </Employee_response>
            </task>
        </Employee_content>
      </Employee_information>    
</Employee>') columns name varchar2(200) path '.' )
union all 
select *
  from xmltable('//*/name(@*)'
                passing xmltype('<Employee>
  <Employee_information>
  <Employee_content>
    <task>
      <Employee_stem>
        <Employee_stem_paragraph>fsdbnfjksdflsdj.</Employee_stem_paragraph>
        <Employee_stem_paragraph>dsfsdfsdfsdf</Employee_stem_paragraph>
      </Employee_stem>    
      <Employee_response>
        <Employee_response_choices>    
          <Employee_choice_list>
            <Employee_block_choice numeric_identifier="1">              
            <Employee_choice_paragraph>sdfsdfsdfsdf</Employee_choice_paragraph>
            </Employee_block_choice>    
          </Employee_choice_list>   
       </Employee_response_choices>    
            </Employee_response>
            </task>
        </Employee_content>
      </Employee_information>    
</Employee>') columns name varchar2(200) path '.' )

【讨论】:

  • 您好,sql 的底部不适用于 BELOW xml... 您好,我是文本 formatted_text> 我想在单独的行中列出所有属性名称及其值,例如text_decoration 下划线 fonst_style 斜体 font_weight 粗体
  • 谢谢..逻辑帮助..我也可以从带有值的父标签中获取属性。谢谢你..
猜你喜欢
  • 1970-01-01
  • 2014-12-24
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多