필드를 수정하기 위한 XPath 표현식 구성
DataPower® Gateway (v5 compatible)를 사용할 때 교정을 위한 필드를 정의하려면 교정할 필드를 지정하는 XPath 표현식을 제공합니다. API 요청 및 응답에서 XML 형식을 사용할 경우 직접 XML 컨텐츠를 기반으로 XPath 명령문을 작성할 수 있습니다. API 요청 및 응답에서 JSON 형식을 사용할 경우 JSON 컨텐츠(JSONx)의 DataPower XML 표시를 사용하여 XPath 표현식을 구성해야 합니다.
이 태스크에 대한 정보
다음 섹션에서는 필드를 수정하기 위한 XPath 표현식 구성 예제를 제공합니다. XML 및 JSON 형식의 API 응답에 대한 예제가 제공됩니다.
XML에 대한 XPath
XML 응답의 다음 예제를 고려하십시오.
<xml>
<primaryAddress>
<streetAddress>21 2nd Street</streetAddress>
<city>New York</city>
<state>NY</state>
<postalCode>10021</postalCode>
</primaryAddress>
<secondaryAddress>
<streetAddress>412 Brooklyn Avenue</streetAddress>
<city>New Jersey</city>
<state>NJ</state>
<postalCode>12302</postalCode>
</secondaryAddress>
</xml>이전 예제에서 "streetAddress"를 수정하려면 XPath 표현식이 다음과 같습니다. //streetAddress여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.
| 표현식 | 의미 |
|---|---|
| // | XML 구조의 모든 곳을 검색 |
| //streetAddress | XML 구조의 모든 곳에서 "streetAddress" 유형의 요소를 검색 |
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<primaryAddress>
<streetAddress>*******</streetAddress>
<city>New York</city>
<state>NY</state>
<postalCode>10021</postalCode>
</primaryAddress>
<secondaryAddress>
<streetAddress>*******</streetAddress>
<city>New Jersey</city>
<state>NJ</state>
<postalCode>12302</postalCode>
</secondaryAddress>
</xml>참고: "streetAddress" "의 두 발생 사례는 모두 삭제되었습니다.
최초 예제에서 "streetAddress" 인시던트의 특정 사건 하나만 수정하려면
XPath 표현식이 다음과 같습니다.
//secondaryAddress/streetAddress여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.
| 표현식 | 의미 |
|---|---|
| //secondaryAddress | XML 구조의 모든 곳에서 "secondaryAddress" 유형의 요소를 검색 |
| //secondaryAddress/streetAddress | 이전 요소에서 "streetAddress" 유형의 하위 요소 검색 |
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<primaryAddress>
<streetAddress>21 2nd Street</streetAddress>
<city>New York</city>
<state>NY</state>
<postalCode>10021</postalCode>
</primaryAddress>
<secondaryAddress>
<streetAddress>*******</streetAddress>
<city>New Jersey</city>
<state>NJ</state>
<postalCode>12302</postalCode>
</secondaryAddress>
</xml>주: 보조 주소만 수정되었습니다.
JSON의 XPathJSON 응답의 다음 예제를 고려하십시오.
{
"primaryAddress": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"secondaryAddress": {
"streetAddress": "412 Brooklyn Avenue",
"city": "New Jersey",
"state": "NJ",
"postalCode": 12302
}
}
이전 XML 예제와 달리 이 예제에 대한 XPath를 구성하려면 해당하는 DataPower XML 표시(JSONx)를 사용해야 합니다. 이 JSON 응답에 해당하는 JSONx는 다음과 같습니다.<json:object xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd" xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<json:object name="primaryAddress">
<json:string name="streetAddress">21 2nd Street</json:string>
<json:string name="city">New York</json:string>
<json:string name="state">NY</json:string>
<json:number name="postalCode">10021</json:number>
</json:object>
<json:object name="secondaryAddress">
<json:string name="streetAddress">412 Brooklyn Avenue</json:string>
<json:string name="city">New York</json:string>
<json:string name="state">NY</json:string>
<json:number name="postalCode">10021</json:number>
</json:object>
</json:object>]
이전 JSONx 구조에서 "streetAddress" 요소를 수정하려면
XPath 표현식이 다음과 같습니다. //*[@name='streetAddress']여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.
| 표현식 | 의미 |
|---|---|
| //* | 구조의 모든 곳에서 요소를 찾음 |
| [@name='streetAddress'] | 이 요소에는 "streetAddress" 값을 가진 'name' 특성이 있음 |
{
"primaryAddress": {
"streetAddress": "*******",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"secondaryAddress": {
"streetAddress": "*******",
"city": "New York",
"state": "NY",
"postalCode": 10021
}
}참고: 앞의 JSON 구조에서 "streetAddress" "의 모든 인스턴스가 삭제되었습니다.
"streetAddress" 요소의 특정 항목을 수정하려면
XPath 표현식이 다음과 같습니다.
//*[@name='secondaryAddress']/*[@name='streetAddress']여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.
| 표현식 | 의미 |
|---|---|
| //* | 구조의 모든 곳에서 요소를 찾음 |
| //*[@name='secondaryAddress'] | 구조의 모든 곳에서 "secondaryAddress" 이름의 요소를 찾음 |
| //*[@name='secondaryAddress']/*[@name='streetAddress'] | 하위 요소의 이름이 "streetAddress"인 모든 유형의 하위 요소(/*)를 찾음 |
{
"primaryAddress": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"secondaryAddress": {
"streetAddress": "*******",
"city": "New York",
"state": "NY",
"postalCode": 10021
}
}주: 보조 주소의 상세 주소만 교정되었습니다.