2012-05-04 46 views
0

我有下面的XML結構,需要在XPATH - 節點路徑與

<VALUE><![CDATA[PRUEBAS BPM]]></VALUE> 

我需要檢查兩個條件來獲取值不同層次的條件:

  1. 獲取到節點領域NAME = 「依賴」]
  2. 到達區[name = 「名稱」]

我XPATH實際寫入樣T他的

/TRAIL/ENTITY/FIELD[NAME="dependency"]/ENTITY/FIELD[NAME="name"]/PRIMITIVE/VALUE/text() 

但是,它不帶任何數據。 我的XPATH寫錯了嗎?我如何理解我的XML中的信息?

任何幫助將不勝感激。

這裏是我的XML結構

<TRAIL> 
    <ENTITY> 
    <FIELD> 
     <NAME>dependency</NAME> 
     <ENTITY> 
     <FIELD> 
      <NAME>codigo</NAME> 
      <PRIMITIVE> 
      <VALUE><![CDATA[906]]></VALUE> 
      </PRIMITIVE> 
     </FIELD> 
     <FIELD> 
      <NAME>name</NAME> 
      <PRIMITIVE> 
      <VALUE><![CDATA[PRUEBAS BPM]]></VALUE> 
      </PRIMITIVE> 
     </FIELD> 
     </ENTITY> 
    </FIELD> 
    </ENTITY> 
</TRAIL> 

預先感謝您的幫助!


作爲一個額外的我必須添加我使用這個XPATH直接從數據庫中檢索信息。 這是我的SQL語句(delta爲包含XML表格的列)

SELECT XPATH('(/TRAIL/ENTITY/FIELD[NAME="dependency"]/ENTITY/FIELD[NAME="name"])/PRIMITIVE/VALUE/text()', CAST(SUBSTRING(delta FROM position('<TRAIL>' IN delta) FOR char_length(delta)) AS ml)) FROM aud_huella_expediente 
+0

你在'/ ENTITY/FIELD [NAME =「name」]之後的xpath中有不必要的**)** –

+0

就是這樣!我已在我的帖子中更正了它 – Tsuru

回答

0

看起來像你只需要刪除右括號:

/TRAIL/ENTITY/FIELD[NAME="dependency"]/ENTITY/FIELD[NAME="name"]/PRIMITIVE/VALUE/text() 
+0

嗨!我很害怕在複製tha xpath時偶然誤將括號括起來。問題是我在SQL語句中使用xpath。這是完整的SQL:SELECT XPATH('(/ TRAIL/ENTITY/FIELD [NAME =「dependency」]/ENTITY/FIELD [NAME =「name」])/ PRIMITIVE/VALUE/text()', CAST(SUBSTRING (delta FROM位置(''IN delta)FOR char_length(delta))AS xml) ) FROM aud_huella_expediente – Tsuru