2012-05-04 77 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