2012-05-04 6 views
0

я получил следующую структуру XML и нужно, чтобы получить значение вXPATH - Путь к узлу с условиями на разных уровнях

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

мне нужно проверить на двух условиях:

  1. Получить к узлу поля [NAME = "зависимости"]
  2. Получить на поле [NAME = "имя"]

Мой XPATH фактически написан как т его

/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 заявление (дельта колонок таблицы, содержащий 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

у вас нет необходимости **) ** в вашем xpath после '/ ENTITY/FIELD [NAME =" name "]' –

+0

Так оно и было! Я исправил его в своем посте – Tsuru

ответ

0

Похоже, вам просто нужно, чтобы удалить это право скобки:

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

Привет! Я боюсь, что при копировании xpath я включил эту скобку случайно. Дело в том, что я использую xpath в инструкции SQL. Это полный SQL: SELECT XPATH ('/ TRAIL/ENTITY/FIELD [NAME = "dependency"]/ENTITY/FIELD [NAME = "name"])/PRIMITIVE/VALUE/text()', CAST (SUBSTRING (delta FROM position ('' IN delta) FOR char_length (delta)) AS xml) ) FROM aud_huella_expediente – Tsuru