Oracle SQL의 xml 문자열에서 값 가져 오기

앤드류

아래에 언급 된 xml 문자열이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
xmlns:ser="http://service.soap.CDRator.com" xmlns:xsd="http://data.soap.CDRator.com/xsd" 
xmlns:xsd1="http://core.data.soap.CDRator.com/xsd" xmlns:xsd2="http://core.result.service.soap.CDRator.com/xsd">
   <soap:Body>
      <ser:generateArchiveDocument>
         <!--Optional:-->
         <ser:contextUser>
            <!--Optional:-->
            <xsd:brandKey>QAMSP</xsd:brandKey>
         </ser:contextUser>
         <!--Optional:-->
         <ser:subscription>
            <!--Optional:-->
            <xsd1:id>201505261213407749</xsd1:id>            
         </ser:subscription>
         <!--Optional:-->
         <ser:letterKey>POS_CONTRACT_PRIVATE</ser:letterKey>
      </ser:generateArchiveDocument>
   </soap:Body>
</soap:Envelope>

나는 문자열에서 값을 얻기 위해 선택 쿼리 아래 작성한 <xsd1:id>201505261213407749</xsd1:id><ser:letterKey>POS_CONTRACT_PRIVATE</ser:letterKey>. 이 문자열에서 값을 얻고 싶지만 쿼리는 아무것도 반환하지 않습니다.

내 선택 쿼리는 다음과 같습니다.

SELECT ID,xt_req.SUBSCRIPTION_ID,CREATE_DATE,WEB_SERVICE_NAME,WEB_METHOD_NAME
FROM TEMP_SOAP_GENERATE_CONTRACT sm
CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://www.w3.org/2003/05/soap-envelope' AS "xsd1"
    ),
    'for $i in //xsd1:id return $i'
    passing XMLType(sm.REQUEST_XML)
    columns "SUBSCRIPTION_ID" number path '/') xt_req    
CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://www.w3.org/2003/05/soap-envelope' AS "ser"
    ),
    'for $i in ser:letterKey return $i'
    passing XMLType(sm.REQUEST_XML)
    columns "LETTER_KEY" VARCHAR2(1000) path '/') xt_letterkey;
알렉스 풀

네임 스페이스 별칭에 제공하는 URL은 XML에 정의 된 것과 일치해야합니다.

CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://core.data.soap.CDRator.com/xsd' AS "xsd1"
    ),

CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://service.soap.CDRator.com' AS "ser"
    ),

네임 스페이스 별칭은 원래 XML에서 사용 된 별칭과 일치 할 필요가 없습니다. 다른 이름으로 호출 할 수 있지만 혼란 스러울 수 있으므로 권장하지 않습니다. 하지만 URL은 일치해야합니다. 노드를 일치시키는 데 사용되는 네임 스페이스 별칭이 나타내는 URL입니다. 따라서이 woudl도 작동합니다. 예 :

CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://core.data.soap.CDRator.com/xsd' AS "my_alias"
    ),
    'for $i in //my_alias:id return $i'

그리고 seconf XMLTable의 경우 XPath는 최상위 요소를 찾고 있습니다. 처음과 같이 할 수있는 간단한 일이 함께 이전 수준을 무시하는 것입니다 //ser:letterKey오히려 단지보다 //ser:letterKey.

따라서 합치면 :

SELECT ID,xt_req.SUBSCRIPTION_ID,CREATE_DATE,WEB_SERVICE_NAME,WEB_METHOD_NAME
FROM TEMP_SOAP_GENERATE_CONTRACT sm
CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://core.data.soap.CDRator.com/xsd' AS "xsd1"
    ),
    'for $i in //xsd1:id return $i'
    passing XMLType(sm.REQUEST_XML)
    columns "SUBSCRIPTION_ID" number path '/') xt_req    
CROSS JOIN XMLTable(XMLNAMESPACES (
      'http://service.soap.CDRator.com' AS "ser"
    ),
    'for $i in //ser:letterKey return $i'
    passing XMLType(sm.REQUEST_XML)
    columns "LETTER_KEY" VARCHAR2(1000) path '/') xt_letterkey;

... 한 행을 다시 가져옵니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP의 XML 문자열에서 값 가져 오기

분류에서Dev

Oracle에서 두 문자열 사이의 값을 가져 오는 select 문

분류에서Dev

Oracle SQL의 ','로 문자열 구분 기호에서 숫자 가져 오기

분류에서Dev

SQL NVARCHAR (MAX)를 XML로 변환하고 XML 문자열에서 값 가져 오기

분류에서Dev

문자열에서 "-"문자 앞뒤의 값 가져 오기

분류에서Dev

Oracle SQL-각 열의 최신 값 가져 오기

분류에서Dev

SQL의 XML에서 속성 및 요소 값 가져 오기

분류에서Dev

C # XML 문자열 문서에서 특정 값 가져 오기-자식 노드

분류에서Dev

C 문자열의 일부에서 숫자 값 가져 오기

분류에서Dev

Swift의 문자열 값에서 숫자 가져 오기

분류에서Dev

XML SQL Select 문에서 값 가져 오기

분류에서Dev

strings.xml에서 임의의 문자열 가져 오기

분류에서Dev

전역 범위의 XML 리소스 파일에서 문자열 값 가져 오기

분류에서Dev

PHP의 XML 배열에서 값 가져 오기

분류에서Dev

PowerShell에서 XML 노드 문자열의 특성 가져 오기

분류에서Dev

XML 문자열에서 PHP var_dump에서 값 가져 오기

분류에서Dev

특정 위치의 문자열에서 값 가져 오기

분류에서Dev

Angular 8의 백엔드에서 문자열 값 가져 오기

분류에서Dev

Elixir의 Code.eval 문자열에서 맵 값 가져 오기

분류에서Dev

Twincat 3에서 Enum의 문자열 값 가져 오기

분류에서Dev

Java의 문자열에서 Float OR 정수 값 가져 오기

분류에서Dev

Bash의 문자열에서 값 가져 오기

분류에서Dev

C #에서 문자열 사이의 값 가져 오기

분류에서Dev

문자열에서 따옴표 안의 값 가져 오기

분류에서Dev

Swift의 배열 값에서 첫 번째 문자 가져 오기

분류에서Dev

Regex : JavaScript의 문자열에서 높이 값 가져 오기

분류에서Dev

PHP의 문자열에서 상수 값 가져 오기

분류에서Dev

VBA의 SQL 문자열에서 액세스 양식 필드 값 가져 오기

분류에서Dev

VBA의 SQL 문자열에서 액세스 양식 필드 값 가져 오기

Related 관련 기사

  1. 1

    PHP의 XML 문자열에서 값 가져 오기

  2. 2

    Oracle에서 두 문자열 사이의 값을 가져 오는 select 문

  3. 3

    Oracle SQL의 ','로 문자열 구분 기호에서 숫자 가져 오기

  4. 4

    SQL NVARCHAR (MAX)를 XML로 변환하고 XML 문자열에서 값 가져 오기

  5. 5

    문자열에서 "-"문자 앞뒤의 값 가져 오기

  6. 6

    Oracle SQL-각 열의 최신 값 가져 오기

  7. 7

    SQL의 XML에서 속성 및 요소 값 가져 오기

  8. 8

    C # XML 문자열 문서에서 특정 값 가져 오기-자식 노드

  9. 9

    C 문자열의 일부에서 숫자 값 가져 오기

  10. 10

    Swift의 문자열 값에서 숫자 가져 오기

  11. 11

    XML SQL Select 문에서 값 가져 오기

  12. 12

    strings.xml에서 임의의 문자열 가져 오기

  13. 13

    전역 범위의 XML 리소스 파일에서 문자열 값 가져 오기

  14. 14

    PHP의 XML 배열에서 값 가져 오기

  15. 15

    PowerShell에서 XML 노드 문자열의 특성 가져 오기

  16. 16

    XML 문자열에서 PHP var_dump에서 값 가져 오기

  17. 17

    특정 위치의 문자열에서 값 가져 오기

  18. 18

    Angular 8의 백엔드에서 문자열 값 가져 오기

  19. 19

    Elixir의 Code.eval 문자열에서 맵 값 가져 오기

  20. 20

    Twincat 3에서 Enum의 문자열 값 가져 오기

  21. 21

    Java의 문자열에서 Float OR 정수 값 가져 오기

  22. 22

    Bash의 문자열에서 값 가져 오기

  23. 23

    C #에서 문자열 사이의 값 가져 오기

  24. 24

    문자열에서 따옴표 안의 값 가져 오기

  25. 25

    Swift의 배열 값에서 첫 번째 문자 가져 오기

  26. 26

    Regex : JavaScript의 문자열에서 높이 값 가져 오기

  27. 27

    PHP의 문자열에서 상수 값 가져 오기

  28. 28

    VBA의 SQL 문자열에서 액세스 양식 필드 값 가져 오기

  29. 29

    VBA의 SQL 문자열에서 액세스 양식 필드 값 가져 오기

뜨겁다태그

보관