0

我有以下 XML 结构,需要获取值

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

我需要检查两个条件:

  1. 到达节点 FIELD[NAME="dependency"]
  2. 前往FIELD[NAME="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 语句(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
4

2 回答 2

1

您的 XPath 是正确text()的(从表达式末尾删除并在线测试)。您的问题很可能来自 CDATA 部分,请参阅如何通过 XPath 在 CDATA 标记中检索元素文本?.

于 2012-05-05T10:53:57.977 回答
0

看起来你只需要删除正确的括号:

/TRAIL/ENTITY/FIELD[NAME="dependency"]/ENTITY/FIELD[NAME="name"]/PRIMITIVE/VALUE/text()
于 2012-05-04T21:54:19.360 回答