[]
        
(Showing Draft Content)

FILTERXML

FILTERXML 함수는 지정된 XPath 식을 사용하여 XML 콘텐츠에서 특정 데이터를 반환합니다.

이 함수는 유효한 XML 형식 문자열에서 요소 값, 특성 값 또는 필터링된 XML 데이터를 추출하는 데 사용할 수 있습니다.

구문

=FILTERXML(xml, xpath)

인수

매개 변수

설명

xml

유효한 XML 형식 문자열 또는 XML 콘텐츠가 포함된 셀 참조입니다.

xpath

XML 콘텐츠에서 추출할 데이터를 지정하는 표준 XPath 형식 문자열입니다.

설명

  • FILTERXML은 지정된 XPath 식과 일치하는 데이터를 반환합니다.

  • XML 문자열이 유효하지 않으면 FILTERXML#VALUE! 오류 값을 반환합니다.

  • XML 문자열에 잘못된 접두사가 있는 네임스페이스가 포함되어 있으면 FILTERXML#VALUE! 오류 값을 반환합니다.

  • XPath 식이 유효하지 않거나 일치하는 데이터를 찾을 수 없으면 FILTERXML#VALUE! 오류 값을 반환합니다.

  • 결과에 여러 값이 포함된 경우 결과는 SpreadJS의 동적 배열 또는 배열 수식 동작을 따릅니다.

예제

XML에서 요소 값 추출

A1에 다음 XML 문자열이 포함되어 있다고 가정합니다.

<bookstore>
  <book><title>Harry Potter</title><price>29.99</price></book>
  <book><title>Learning XML</title><price>39.95</price></book>
  <book><title>XQuery Kick Start</title><price>49.99</price></book>
</bookstore>

수식

결과

설명

=FILTERXML(A1,"//title")

{"Harry Potter"; "Learning XML"; "XQuery Kick Start"}

모든 <title> 요소 값을 반환합니다.

=FILTERXML(A1,"//book[1]/title")

Harry Potter

첫 번째 책의 제목을 반환합니다.

=FILTERXML(A1,"//book[last()]/title")

XQuery Kick Start

마지막 책의 제목을 반환합니다.

=FILTERXML(A1,"//book/price")

{29.99; 39.95; 49.99}

모든 <price> 요소 값을 반환합니다.

=FILTERXML(A1,"//book[price>30]/title")

{"Learning XML"; "XQuery Kick Start"}

가격이 30보다 큰 책의 제목을 반환합니다.

특성을 사용하여 데이터 추출

A1에 다음 XML 문자열이 포함되어 있다고 가정합니다.

<catalog>
  <product id="1" category="electronics">Laptop</product>
  <product id="2" category="electronics">Phone</product>
  <product id="3" category="clothing">T-Shirt</product>
</catalog>

수식

결과

설명

=FILTERXML(A1,"//product/@id")

{1; 2; 3}

모든 id 특성 값을 반환합니다.

=FILTERXML(A1,"//product[@category='electronics']")

{"Laptop"; "Phone"}

electronics 범주의 제품을 반환합니다.

=FILTERXML(A1,"//product[@id='2']")

Phone

id="2"인 제품을 반환합니다.

XPath 함수를 사용하여 텍스트 추출

A1에 다음 XML 문자열이 포함되어 있다고 가정합니다.

<employees>
  <employee><name>Alice</name><dept>Engineering</dept></employee>
  <employee><name>Bob</name><dept>Marketing</dept></employee>
  <employee><name>Charlie</name><dept>Engineering</dept></employee>
</employees>

수식

결과

설명

=FILTERXML(A1,"//employee[contains(name,'li')]/name")

{"Alice"; "Charlie"}

li가 포함된 이름을 반환합니다.

WEBSERVICE와 함께 FILTERXML 사용

FILTERXMLWEBSERVICE 함수와 함께 사용하여 URL에서 반환된 XML에서 데이터를 추출할 수 있습니다.

=FILTERXML(WEBSERVICE("https://example.com/data.xml"),"//item/name")

이 수식은 먼저 WEBSERVICE를 사용하여 지정된 URL에서 XML 데이터를 다운로드한 다음, FILTERXML을 사용하여 <item> 아래의 모든 <name> 요소를 추출합니다.

일치하는 값이 여러 개 발견되면 결과는 SpreadJS의 동적 배열 또는 배열 수식 동작을 따릅니다.

참고

  • FILTERXML은 XPath 식을 사용하여 XML 콘텐츠에서 데이터를 찾습니다.

  • 결과에 여러 값이 포함된 경우 수식 모드 및 동적 배열 동작에 따라 값이 여러 셀로 분산될 수 있습니다.

  • SpreadJS에는 Excel과 동일한 32,767자 셀 문자열 제한이 없습니다. Excel에서 긴 XML 문자열이 잘리거나 긴 WEBSERVICE 응답에 대해 #VALUE!을 반환하는 경우에도 XML 콘텐츠가 완전하고 유효하다면 SpreadJS에서는 유효한 결과를 반환할 수 있습니다.