当前位置: 首页 > 面试题库 >

使用带有名称空间的SQL Server 2008从XML中选择值

韩峰
2023-03-14
问题内容

我的XML看起来像

<p:initiateTest xmlns:S52="https://collaborate.com/svn/edm/tdp/CharacteristicEnumerations" 
     xmlns:p="http://collaborate.com/svn/capabilities/tdp/ManageNetworkAndServiceDiagnosticsV4/" 
     xmlns:p1="http://wsi.nat.com/2005/06/StandardHeader/" 
     xmlns:p2="https://collaborate.com/svn/edm/tdp/Test" 
     xmlns:p3="https://collaborate.com/svn/edm/tdp/Parties" 
     xmlns:p4="https://collaborate.com/svn/edm/tdp/MORT" >
   <p1:standardHeader>
      <p1:stateCode>OK</p1:stateCode>
   </p1:standardHeader>
</p:initiateTest>

当我在下面运行TSQL时,它完成但不返回状态码值

Declare @mxml XML

Select @mxml = xmlString
From CT_GTCS_Temp_XML
Where ID = 1

;WITH XMLNAMESPACES(  'p' AS p, 'p1' as p1, 'p2' AS p2)

select feed.xx.value('.','VARCHAR(MAX)') as statecode
from @mxml.nodes('//p:initiateTest/p1:standardHeader/p1:stateCode') feed(xx)

问题答案:

您需要定义 名称空间 -而不是前缀!-在您的WITH XMLNAMESPACES声明中。

试试这个:

;WITH XMLNAMESPACES
   ('http://collaborate.com/svn/capabilities/tdp/ManageNetworkAndServiceDiagnosticsV4/' AS p, 
    'http://wsi.nat.com/2005/06/StandardHeader/' as p1)
select 
    feed.xx.value('.','VARCHAR(MAX)') as statecode
from 
    @mxml.nodes('/p:initiateTest/p1:standardHeader/p1:stateCode') feed(xx)


 类似资料:
  • 使用xslt 1.0(BizTalk 2016)我正在寻找一种通用的方法来选择任何有效的xml文档的命名空间 例如,我有以下xml文档: 假设根元素的值可以是任何东西,那么选择名称空间值的xpath是什么http://www.random.com/bo/request/portfolioactivation 我原本希望“/*/@xmlns”能起作用,但事实并非如此。

  • 我正在尝试选择一个特定的

  • 我有一个来自外部endpoint的巨大XML响应。我想解析java类的XML响应。如果没有一个XML有名称空间,我就能够解析成相应的POJOS,直到那时一切都很好。 但是,响应可能仅在根元素中包含命名空间。例如,像这样 我可以保证没有一个内部xml元素会有更多的命名空间。 有没有办法实现这一点?我看到一些完全忽略命名空间的答案,但感觉不是很有说服力。有没有办法正确解析这些。 这是我为XML响应建模

  • 我试图使用名称空间从xml文件中选择一个xml节点。我已经有了一个选项,但第二个选项无法使用。 这是简化的xml(在python代码中存储为BookMetaData): 这是我到目前为止编写的python代码: 我尝试过的不起作用的东西: how-to-use-xpath-from-lxml-on-null-namessped-节点命名空间"http://www.idpf.org/2007/opf

  • 问题内容: 我正在一个没有架构的项目中,我必须手动解析xml响应。我的问题是我无法使用xml注释获得一些价值。 例如,xml类似于: Java类是: 我可以获取操作和响应,但不能在responsedata中获取数字,有人可以告诉我如何处理using注释吗?太感谢了! 另一个问题是:我的响应数据中有多个…。如何获取Java代码中的所有值。 ->我解决了多个相同的标签,只需设置List,注释将自动生成

  • 问题内容: 我想针对XSD架构验证XML文件。XML文件根元素没有任何名称空间或xsi详细信息。它没有属性,只是。 我已经尝试从http://www.ibm.com/developerworks/xml/library/x-javaxmlvalidapi.html尝试以下代码,但运气不佳 xml可以使用包含的名称空间标头等(通过xmlspy添加)很好地验证,但是我想可以不用手动编辑源文件就可以声明