gpt4 book ai didi

sql-server - T-SQL XQuery 嵌套命名空间问题

转载 作者:行者123 更新时间:2023-12-04 16:59:51 25 4
gpt4 key购买 nike

我只想要一个实际的EndTime - 有这么多要求吗?

declare @x xml = '
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<bogus>1934</bogus>
<getJobActionsResponse xmlns="urn:JobService">
<getJobActionsReturn>
<job xmlns:ns1="urn:JobService" xsi:type="ns1:SvcJob">
<actions />
<actualEndTime>
<dateString>2019-05-15 19:46:54.207</dateString>
</actualEndTime>
</job>
</getJobActionsReturn>
</getJobActionsResponse>
</soapenv:Body>
</soapenv:Envelope>'

似乎来自 this 之类的帖子我应该能够做这样的查询:
;with xmlnamespaces (N'http://schemas.xmlsoap.org/soap/envelope/' as ns0, 
N'urn:JobService' as ns2)
select @x.value('(/ns0:envelope/ns0:body/ns2:getJobActions/ns2:getJobActionsReturn/ns2:job/ns2:actualEndTime)[1]', 'nvarchar(max)')

我尝试了命名空间前缀的各种排列,但我尝试的所有内容都返回 null。我什至无法获得上游虚假值来返回非空值:
;with xmlnamespaces (N'http://schemas.xmlsoap.org/soap/envelope/' as ns0)
select @x.value('(/ns0:envelope/ns0:body/ns0:bogus)[1]', 'nvarchar(max)')

我没有命名空间(每个解释它们的网页似乎都有一英里长)。对不起,请和谢谢。

最佳答案

你很接近,但你犯了这些错误:

  • 标签名称是 区分大小写 - 您需要使用 <ns0:Envelope> (不是 <ns0:envelope>)等
  • 您拼错了 <ns2:getJobActionsResponse><ns2:getJobActions>
  • 您没有“一路走下”到 <ns2:dateString>元素

  • 试试这个 :
    declare @x xml = '
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <bogus>1934</bogus>
    <getJobActionsResponse xmlns="urn:JobService">
    <getJobActionsReturn>
    <job xmlns:ns1="urn:JobService" xsi:type="ns1:SvcJob">
    <actions />
    <actualEndTime>
    <dateString>2019-05-15 19:46:54.207</dateString>
    </actualEndTime>
    </job>
    </getJobActionsReturn>
    </getJobActionsResponse>
    </soapenv:Body>
    </soapenv:Envelope>'

    ;with xmlnamespaces (N'http://schemas.xmlsoap.org/soap/envelope/' as ns0,
    N'urn:JobService' as ns2)
    select @x.value('(/ns0:Envelope/ns0:Body/ns2:getJobActionsResponse/ns2:getJobActionsReturn/ns2:job/ns2:actualEndTime/ns2:dateString)[1]', 'nvarchar(max)')

    关于sql-server - T-SQL XQuery 嵌套命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548278/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com