要素がのxmlns属性を持っているときOPENXMLから値を取得できません

StackOverflow https://stackoverflow.com/questions/1055095

  •  20-08-2019
  •  | 
  •  

質問

のxmlnsは私が必要とする値の取得を停止し、次のコードで属性。他の属性ではなくのxmlnsと正常に動作します。どのように私はCrpId値を取得することができます。

- 私は私が与えられていたXMLを制御することはできません?
declare @CrpId int, @i int, @xml xml
set @xml = 
'<NewProgressReportResult xmlns="http://myDomain.com/crp">
<CrpId>2160</CrpId>
</NewProgressReportResult>'

exec sp_xml_preparedocument @i output, @xml

select 
CrpId
from openxml (@i, 'NewProgressReportResult', 2)
with (  
    CrpId int 'CrpId'
)

exec sp_xml_removedocument @i
役に立ちましたか?

解決

私はすべてに自分自身をOpenXMLのを知っているが、このFAQ ではありません答えを持っているようです。基本的にはあなたが(原因xlmns属性に)特定の名前空間内の要素を持っているので、それはですので、あなたのクエリで同じ名前空間を指定できるようにする必要があります。

あなたの特定の問題にこれを変換する、私はあなたがしたいと思います。

declare @CrpId int, @i int, @xml xml
set @xml = 
'<NewProgressReportResult xmlns="http://myDomain.com/crp">
<CrpId>2160</CrpId>
</NewProgressReportResult>'

set @ns = '<root xmlns:ns="http://myDomain.com/crp"/>

exec sp_xml_preparedocument @i output, @xml, @ns

select 
CrpId
from openxml (@i, '[ns:NewProgressReportResult]', 2)
with (  
        [ns:CrpId] int 'CrpId'
)

exec sp_xml_removedocument @i
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top