【问题标题】:Get attribute1 value when attribute2 value (using XPath)当attribute2值时获取attribute1值(使用XPath)
【发布时间】:2017-08-28 10:02:19
【问题描述】:

在这个 XML 示例中,我想在使用 XPath 时获取attribute Attr_2 的值(显示str1234)。

<ROOT>
     <ELEM_1   Attr_1 = "A"   Attr_2 = "str1234" />
     <ELEM_1   Attr_1 = "B"   Attr_2 = "str5678" />
</ROOT>

【问题讨论】:

    标签: xml xpath plsql


    【解决方案1】:

    XPath 是 '/ROOT/ELEM_1[@Attr_1 = "A"]/@Attr_2'

    但是,如果您想在 Oracle DB 中进行操作,则必须使用 xmltable xmlquery

    select * from xmltable('ROOT/ELEM_1[@Attr_1 = "A"]/@Attr_2' passing xmltype('
    <ROOT>
         <ELEM_1   Attr_1 = "A"   Attr_2 = "str1234" />
         <ELEM_1   Attr_1 = "B"   Attr_2 = "str5678" />
              <ELEM_1   Attr_1 = "A"   Attr_2 = "next_value" />
    </ROOT>') 
    columns attr2 varchar2(100) path '.');
    

    【讨论】:

      【解决方案2】:

      试试下面

      /ROOT/ELEM_1[1]  ->  it will return str1234
      /ROOT/ELEM_1[2]  ->  it will return str5678
      

      (/ROOT/ELEM_1)[1]  ->  it will return str1234
      (/ROOT/ELEM_1)[2]  ->  it will return str5678
      

      /ROOT/ELEM_1[1]/@Attr_1  -> it will return A
      /ROOT/ELEM_1[2]/@Attr_1  -> it will return B
      

      /ROOT/ELEM_1[@Attr_1='A']/@Attr_2  -> It will return str1234
      /ROOT/ELEM_1[@Attr_1='B']/@Attr_2  -> It will return str5678
      

      希望对你有帮助:)

      【讨论】:

      • 感谢您的回复,但在您的回答中,为什么它返回 attr_2 的值而不是 attr_1 的值,没有在 XPATH 中指定的值?
      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 2012-09-06
      • 1970-01-01
      • 2016-04-22
      • 2014-08-09
      • 2012-02-07
      • 2012-06-30
      • 2011-09-16
      相关资源
      最近更新 更多