【发布时间】:2017-02-17 12:32:01
【问题描述】:
我是 Xpath 的新手,这是我的 XML。我正在尝试获取 appl/*__job 标记中的属性值 @name 和节点 snmp_notify/message 中的值 'TESTQUEUE ',我一次迈出一步。到目前为止,我能够获取所有_job的子节点,但无法获取节点/snmp_notifylist/snmp_notify/message中的值。这是 SQL,有人可以帮我确定我卡在哪里了。
这是在 TAB_AR 表中存储为 DEFINITION 的示例 XML 文档。
<appl xmlns="http://dto.wa.ca.com/application" name="TEST_NEW_AGENT">
<version>12.0</version>
<comment />
<unix_job name="TEST_JOB">
<dependencies><relcount>0</relcount></dependencies>
<snmp_notifylist>
<snmp_notify>
<returncode>4</returncode>
<monitor_states><monitor_state>FAILED</monitor_state></monitor_states>
<snmpagent />
<message>TICKET TESTQUEUE TSTMSG</message>
</snmp_notify>
</snmp_notifylist>
</unix_job>
<link name="HOLD_LINK">
<dependencies><relcount>0</relcount></dependencies>
<hold>true</hold>
<job_ancestor_wait_default_ignore>true</job_ancestor_wait_default_ignore>
</link>
<sftp_job name="TEST_SFTP1">
<dependencies><relcount>0</relcount></dependencies>
<snmp_notifylist>
<snmp_notify>
<returncode>4</returncode>
<monitor_states>
<monitor_state>FAILED</monitor_state>
</monitor_states>
<snmpagent />
<message>TICKET MFG1AWA TSTMSG</message>
</snmp_notify>
</snmp_notifylist>
</sftp_job>
</appl>
这是我写的 SQL,
SELECT
SFTP_Job_name = DEFT1.value('(@name)[1]','nvarchar(max)'),
Server_Address = DEFT1.query('local-name(/*:snmp_notifylist/*:snmp_notify/*:message)')
from (select CAST([DEFINITION] as XML) as DEFT from TAB_AR)TAB
CROSS APPLY TAB.DEFT.nodes('/*:appl/*[fn:contains(local-name(),"_job")]') as XMLTAB1(DEFT1)
【问题讨论】:
标签: sql-server xml xpath