Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 使用PL/SQL读取XML文档,XML标记不固定_Oracle_Plsql_Plsql Package - Fatal编程技术网

Oracle 使用PL/SQL读取XML文档,XML标记不固定

Oracle 使用PL/SQL读取XML文档,XML标记不固定,oracle,plsql,plsql-package,Oracle,Plsql,Plsql Package,需要读取XML文档并获取元素标记的值及其值。但在运行时之前,XML元素节点的值是未知的。所以不能使用XPATH来提取值。有没有处理这个问题的建议 假设这就是我拥有的xml。所有元素的名称都是未知的。不知道有多少。我想要得到的元素名称、元素级别、值。 此xml包含另一个xml文档的模板 <d2> <d3> <d4> <d5> <d6>@name@</

需要读取XML文档并获取元素标记的值及其值。但在运行时之前,XML元素节点的值是未知的。所以不能使用XPATH来提取值。有没有处理这个问题的建议

假设这就是我拥有的xml。所有元素的名称都是未知的。不知道有多少。我想要得到的元素名称、元素级别、值。 此xml包含另一个xml文档的模板

<d2>
      <d3>
         <d4>
            <d5>
               <d6>@name@</d6>
               <d6>@name@</d6>
            </d5>
            <d5>
               <d6>@name@</d6>
               <d6>@name@</d6>
            </d5>
            <d5>@name@</d5>
            <d5>@name@</d5>
         </d4>
      </d3>
      <d3>@name@</d3>
      <d3>
         <d4>@name@</d4>
         <d4>
            <d5>@age@</d5>
            <d5>
               <d6>@name@</d6>
               <d6>@date@</d6>
            </d5>
         </d4>
      </d3>
</d2>

几乎无法解释发生了什么

Xml示例是从表单中复制的。 '//*[text]'-选择所有文本节点形成xml 对于有序性-为xml生成行数 名称或本地名称-返回带或不带命名空间前缀的节点名称 字符串JoinAsentor或self::*/name.,/-文本节点所有父节点的路径 ./text-节点的值


我们可以使用DBMS\u XMLDOM内置的包方法,[DBMS\u XMLDOM]:

值未知,或者整个chierarchy未知?你应该上传一些代码…整个层次结构未知。
with  test as (select xmltype('<breakfast_menu>
<food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
        <description>
       Two of our famous Belgian Waffles with plenty of real maple syrup
       </description>
        <calories>650</calories>
</food>
<food>
        <name>Strawberry Belgian Waffles</name>
        <price>$7.95</price>
        <description>
        Light Belgian waffles covered with strawberries and whipped cream
        </description>
        <calories>900</calories>
</food>
</breakfast_menu>') xx from dual
       union all 
 select xmltype('<root xmlns:h="http://www.w3.org/TR/html4/"
    xmlns:f="https://www.w3schools.com/furniture">
    <h:table>
      <h:tr>
        <h:td>Apples</h:td>
        <h:td>Bananas</h:td>
      </h:tr>
    </h:table>
    <f:table>
      <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
    </root>'
) xx from dual
    )  
select r.*
              from test
                   , xmltable('//*[text()]' passing xx
                              columns xp_lp        for ordinality                
                           , xp_node varchar(4000) path 'name(.)'                      
                           , xp_node1 varchar(4000) path 'local-name(.)'
                           , xp_parent varchar(4000) path 'string-join(ancestor-or-self::*/name(.),"/")'
                           , xp_value varchar(4000) path './text()'
                           , xp_namespaces varchar2(4000) path 'namespace-uri(.)') r