要素がのxmlns属性を持っているときOPENXMLから値を取得できません
-
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
所属していません StackOverflow