2014-04-17 2 views
0

여기서는 모든 예제를 검색했지만 사용했지만 행운은 없었습니다. 나는이 XML에서 노드 '하는 맞춤'의 값을 찾으려면 : 내가 원하는 (노드)SQL XML 노드 값 검색

<?xml version="1.0" encoding="UTF-8"?> 
<AppMgmtDigest xmlns="http://schemas.microsoft.com/SystemCenterConfigurationManager/2009/AppMgmtDigest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Application AuthoringScopeId="ScopeId_B831987C-E9E7-47D5-95A5-1EEAC7B035D5" LogicalName="Application_d030d07c-a5ef-419b-aa46-44ff0697050b" Version="13"> 
     <DisplayInfo DefaultLanguage="en-US"> 
      <Info Language="en-US"> 
       <Title>Adobe Acrobat Professional XI</Title> 
       <Publisher>Adobe</Publisher> 
       <Version>11.0.00</Version> 
       <Tags> 
        <Tag>Adobe Acrobat Professional XI</Tag> 
       </Tags> 
      </Info> 
     </DisplayInfo> 
     <DeploymentTypes> 
      <DeploymentType AuthoringScopeId="ScopeId_B831987C-E9E7-47D5-95A5-1EEAC7B035D5" LogicalName="DeploymentType_9193d006-04f2-41e5-8495-62bedf3f79e4" Version="10" /> 
     </DeploymentTypes> 
     <Title ResourceId="Res_814073674">Adobe Acrobat Professional XI</Title> 
     <Description ResourceId="Res_469365393" /> 
     <Publisher ResourceId="Res_231516204">Adobe</Publisher> 
     <SoftwareVersion ResourceId="Res_266572543">11.0.00</SoftwareVersion> 
     <CustomId ResourceId="Res_1915338015">**THIS IS ANSWER**</CustomId> 
     <AutoInstall>true</AutoInstall> 
     <Owners> 
      <User Qualifier="LogonName" Id="abc" /> 
     </Owners> 
     <Contacts> 
      <User Qualifier="LogonName" Id="abc" /> 
     </Contacts> 
     <HighPriority>1</HighPriority> 
     <AutoDistribute>true</AutoDistribute> 
    </Application> 
</AppMgmtDigest> 

값은 "이 대답은"입니다. 나는 이것을 보았지만 행운이 없었다.

select a.b.value('.','varchar(max)') 
    from @xml.nodes('//AppMgmtDigest/Application/CustomId') a(b); 
+0

네임 스페이스' "http://schemas.microsoft.com/SystemCenterConfigurationManager/2009/AppMgmtDigest을 '등록'또는 네임 스페이스를 무시하여 XPath 식을 호출 할 필요가 . – helderdarocha

답변

0

XML에는 XPath 표현식에서 고려해야 할 네임 스페이스가있다.

이 XPath 식을 사용하여 계정에 네임 스페이스를 복용없이 당신이 을 할 텍스트를 추출 할 수 있습니다 :

//*[local-name()='AppMgmtDigest']/*[local-name()='Application']/*[local-name()='CustomId'] 

당신은 시도 할 수 있습니다 :

select a.b.value('.','varchar(max)') 
    from @xml.nodes('//*[local-name()="AppMgmtDigest"]/*[local-name()="Application"]/*[local-name()="CustomId"]') a(b); 

또한 네임 스페이스를 등록 할 수 있습니다. 당신은 아마 당신의 select 쿼리하기 전에이 뭔가를 추가해야합니다 :

prefix
;with xmlnamespaces ('http://schemas.microsoft.com/SystemCenterConfigurationManager/2009/AppMgmtDige‌​st' as prefix) 

당신이 원하는 접두사입니다. 그런 다음 XPath는 요소를 자격을 접두사를 사용

//prefix:AppMgmtDigest/prefix:Application/prefix:CustomId 
+0

내 친구에게 고맙습니다 ... 나는이 질문을 2 일 전에 받았고 시간을 절약했으면 좋겠습니다. 다시 한 번 감사드립니다. – FromNY