4
이 질문을 참조 XML에 정의 된 네임 스페이스. 그러나 네임 스페이스 요소가있을 때 노드 요소의 값을 가져올 수 없습니다.문제 배경에 대한
DECLARE @xmlWithNameSpace XML
DECLARE @xmlWithoutNameSpace XML
SET @xmlWithNameSpace = '<?xml version="1.0" encoding="UTF-8"?>
<Feed xmlns="gizmo">
<Product id="4444">
<ProductId>4444</ProductId>
</Product>
</Feed>'
SET @xmlWithoutNameSpace = '<?xml version="1.0" encoding="UTF-8"?>
<Feed>
<Product id="4444">
<ProductId>4444</ProductId>
</Product>
</Feed>'
SELECT feed.product.value('@id[1]', 'INT') AS productId
FROM @xmlWithNameSpace.nodes('declare namespace ns="gizmo"; /ns:Feed/ns:Product') feed(product)
UNION ALL
SELECT feed.product.value('ProductId[1]', 'INT') AS productId
FROM @xmlWithNameSpace.nodes('declare namespace ns="gizmo"; /ns:Feed/ns:Product') feed(product)
UNION ALL
SELECT feed.product.value('@id[1]', 'INT') AS productId
FROM @xmlWithoutNameSpace.nodes('/Feed/Product') feed(product)
UNION ALL
SELECT feed.product.value('ProductId[1]', 'INT') AS productId
FROM @xmlWithoutNameSpace.nodes('/Feed/Product') feed(product)
이
4444
NULL
4444
4444
무엇 내가 PRODUCTID 노드 (4444) 네임 스페이스가 사용의 가치를 잘못하고있는 중이 반환 예를 들면 다음과 같습니다입니까?
미리 안내해 주셔서 감사합니다.
위 부분 질문은 훌륭하게 작동하지만 SQL Server-2012에서 맨 아래 부분 (WITH 키워드 사용)은 구문 오류를 발생시킵니다. – Hardryv
WITH 앞에 세미콜론을 추가하십시오. 도움이되기를 바랍니다. –