1

pl/sqlに次のxml構造体があります。

<struct>
  <member>
    <name>CODE</name>
    <value>
      <integer>0</integer>
    </value>
  </member>
  <member>
    <name>MSG</name>
    <value>
      <string>Some message</string>
    </value>
  </member>
</struct>

名前タグのテキストを使用してパス/member/ value / some_typeの値を抽出するにはどうすればよいですか?私はこのようなものを意味します:

extract('//member/value/*[filter name tag = CODE]').getStringValue
4

2 に答える 2

0

あなたはこれを使用して達成することができますlocal-name()

XPathは、

//member/value/*[local-name()='CODE']

例:

  1. //member/value/*[local-name()='integer']
  2. //member/value/*[local-name()='string']

結果:

  1. 0
  2. いくつかのメッセージ

アップデート:

この場合、XPathは次のようになります。

//member[*='CODE']/*/*
//member[*='MSG']/*/*

結果:

  1. 0
  2. いくつかのメッセージ
于 2012-12-25T12:53:50.813 に答える
0

簡単に言うと、データベースをETL(抽出、変換、読み込み)ツールとして扱わないということです。あなたがしたいのは、このXMLファイルをXPathを使用する別のプログラムに渡し、そのように処理することです。データベースはデータを保存することだけを目的としています。実際、私は過去5か月間、このような「エキゾチック」なコードを削除して、Oracleデータベースが40万行を挿入するのに72時間以上かかるようにしました。したがって、これをxpathにオフセットします

クエリは上記のコマンドとほぼ同じになります

于 2012-12-25T12:55:59.037 に答える