2016-12-09 8 views
0

以下のXML文書がSQLクエリで返されました。私はすべての値を返すことができますが、特定の行のすべての値ではなく、各行のすべての値を返します。xml xpath jdbc行

//jdbc:value[1]はすべての値を返します。私は、特定の行に対して返される値を制限するために私が何を行うのか分かりません。私は親の属性/参照の下にすべての子供jdbc:valuesをつかむと仮定しています。<jdbc:row jdbc:number="1">です。

以下は、受け取った文書です。

<nds dtdversion="2.0" ndsversion="8.x" xmlns:jdbc="urn:dirxml:jdbc"> 
    <source> 
    <product build="20160704_0401" instance="PeopleSoft JDBC driver" version="4.0.2.2">DirXML Driver for JDBC</product> 
    <contact>NetIQ Corporation</contact> 
    </source> 
    <output> 
    <jdbc:result-set event-id="0" jdbc:number-of-rows="2"> 
     <jdbc:row jdbc:number="1"> 
     <jdbc:column jdbc:name="UID_IAM" jdbc:position="1" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>429332-0-2014-11-28</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="EFFDT" jdbc:position="2" jdbc:type="java.sql.Types.TIMESTAMP"> 
      <jdbc:value>2014-11-28 00:00:00.0</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="PK_EMPLID" jdbc:position="3" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>429332</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="EMPL_STATUS" jdbc:position="4" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>T</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="EMPL_RCD" jdbc:position="5" jdbc:type="java.sql.Types.NUMERIC"> 
      <jdbc:value>0</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="COALESCE(TERMINATION_DT,DATE'1916-01-01')" jdbc:position="6" jdbc:type="java.sql.Types.TIMESTAMP"> 
      <jdbc:value>2014-11-27 00:00:00.0</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="NVL(JOB_DESCR,'NULL')" jdbc:position="7" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>Temporary Employee, hourly</jdbc:value> 
     </jdbc:column> 
     </jdbc:row> 
     <jdbc:row jdbc:number="2"> 
     <jdbc:column jdbc:name="UID_IAM" jdbc:position="1" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>429332-0-2015-07-22</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="EFFDT" jdbc:position="2" jdbc:type="java.sql.Types.TIMESTAMP"> 
      <jdbc:value>2015-07-22 00:00:00.0</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="PK_EMPLID" jdbc:position="3" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>429332</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="EMPL_STATUS" jdbc:position="4" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>A</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="EMPL_RCD" jdbc:position="5" jdbc:type="java.sql.Types.NUMERIC"> 
      <jdbc:value>0</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="COALESCE(TERMINATION_DT,DATE'1916-01-01')" jdbc:position="6" jdbc:type="java.sql.Types.TIMESTAMP"> 
      <jdbc:value>1916-01-01 00:00:00.0</jdbc:value> 
     </jdbc:column> 
     <jdbc:column jdbc:name="NVL(JOB_DESCR,'NULL')" jdbc:position="7" jdbc:type="java.sql.Types.VARCHAR"> 
      <jdbc:value>Affiliate</jdbc:value> 
     </jdbc:column> 
     </jdbc:row> 
    </jdbc:result-set> 
    <status event-id="0" level="success"> 
     <application>DirXML</application> 
     <module>PeopleSoft JDBC driver</module> 
     <object-dn></object-dn> 
     <component>Subscriber</component> 
    </status> 
    </output> 
</nds> 

おかげ

答えて

1

あなたは、そのインデックスまたは最初@jdbc:number属性値によってターゲット行を選択し、[jdbc:value対応する要素を返すことができます。

//jdbc:row[2]/jdbc:column/jdbc:value 
//jdbc:row[@jdbc:number=2]/jdbc:column/jdbc:value 

demo

:例えば、第二行から全て jdbc:value要素を返すのいずれか次のXPathを使用して行うことができ