JavaTM 2 Platform
Standard Ed. 5.0

ÆÐÅ°Áö javax.xml.xpath

ÀÌ ÆÐÅ°Áö´Â XPath ½ÄÀ» Æò°¡Çϱâ À§ÇÑ ¡¸°´Ã¼ ¸ðµ¨¿¡ Á¸ÇÏÁö ¾Ê´Â´Ù¡¹API¸¦ Á¦°øÇØ, Æò°¡ ȯ°æ¿¡ ¾×¼¼½º ÇÕ´Ï´Ù.

ÂüÁ¶Ã³:
          ¼³¸í

ÀÎÅÍÆäÀ̽º °³¿ä
XPath XPath´Â XPath Æò°¡ ȯ°æ ¹× ½Ä¿¡ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
XPathExpression XPathExpression´Â ÄÄÆÄÀÏ µÈ XPath ½Ä¿¡ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
XPathFunction XPathFunction´Â XPath ÇÔ¼ö¿¡ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
XPathFunctionResolver XPathFunctionResolver´Â ÀÏ·ÃÀÇ »ç¿ëÀÚ Á¤ÀÇÀÇ XPathFunction¿¡ ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
XPathVariableResolver XPathVariableResolver´Â ÀÏ·ÃÀÇ »ç¿ëÀÚ Á¤ÀÇÀÇ XPath º¯¼ö¿¡ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
 

Ŭ·¡½º °³¿ä
XPathConstants XPath Á¤¼öÀÔ´Ï´Ù.
XPathFactory XPathFactoryÀνºÅϽº¸¦ »ç¿ëÇØ, XPath °´Ã¼¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
 

¿¹¿Ü °³¿ä
XPathException XPathException´Â ¹ü¿ë XPath ¿¹¿Ü¸¦ ³ªÅ¸³À´Ï´Ù.
XPathExpressionException XPathExpressionException´Â XPath ½ÄÀÇ ¿¡·¯¸¦ ³ªÅ¸³À´Ï´Ù.
XPathFactoryConfigurationException XPathFactoryConfigurationException´Â XPathFactory ȯ°æÀÇ ±¸¼º ¿¡·¯¸¦ ³ªÅ¸³À´Ï´Ù.
XPathFunctionException XPathFunctionException´Â XPath ÇÔ¼öÀÇ ¿¡·¯¸¦ ³ªÅ¸³À´Ï´Ù.
 

ÆÐÅ°Áö javax.xml.xpath ¼³¸í

ÀÌ ÆÐÅ°Áö´Â XPath ½ÄÀ» Æò°¡Çϱâ À§ÇÑ ¡¸°´Ã¼ ¸ðµ¨¿¡ Á¸ÇÏÁö ¾Ê´Â´Ù¡¹API¸¦ Á¦°øÇØ, Æò°¡ ȯ°æ¿¡ ¾×¼¼½º ÇÕ´Ï´Ù.

´ÙÀ½ÀÇ XML Ç¥ÁØÀÌ Àû¿ëµË´Ï´Ù.


XPath °³¿ä

XPath ¾ð¾î´Â XML ¹®¼­·ÎºÎÅÍ ³ëµå¸¦ ¼±ÅÃÇϱâ À§ÇÑ ´Ü¼øÇÏ°í °£°áÇÑ ±¸¹®À» Á¦°øÇÕ´Ï´Ù. ¶Ç, XML ¹®¼­ °´Ã¼ ¸ðµ¨ (DOM) Æ®¸®ÀÇ ³ëµå¸¦ boolean, double, ¶Ç´Â string Ä¡·Î º¯È¯Çϱâ À§ÇÑ ±ÔÄ¢µµ Á¦°øÇÕ´Ï´Ù. XPath´Â W3C¿¡ ÀÇÇØ Á¤ÀÇµÈ ¾ð¾îÀ̸ç, °ø½ÄÀÇ W3C ±Ç°íÀÔ´Ï´Ù. W3C´Â XML Path Language (XPath) Version 1.0 »ç¾çÀ» È£½ºÆ® ÇÏ°í ÀÖ½À´Ï´Ù.

XPath´Â 1999 ³â¿¡ XSLT ¹× XPointer ¾ð¾îÀÇ º¸ÃæÀ¸·Î¼­ ź»ýÇß½À´Ï´Ù¸¸, ÃÖ±Ù¿¡´Â µ¶¸³ÇÑ ¾ð¾î·Î¼­ ¶Ç ¸¹Àº DOM API ÄÚµå ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ´ÜÀÏÀÇ XPath ½ÄÀ¸·Î¼­ º¸±ÞÇØ ¿Ô½À´Ï´Ù.

XPath ½Ä

XPath ½ÄÀº 1°³ÀÇ ¡¸·ÎÄÉÀÌ¼Ç Æнº¡¹ ¹× 1°³ ¶Ç´Â º¹¼öÀÇ ¡¸ÇÁ·¹µðÄÉÀÌÆ®¡¹·Î ±¸¼ºµË´Ï´Ù. ½Ä¿¡´Â XPath º¯¼ö°¡ Æ÷ÇԵǴ °æ¿ìµµ ÀÖ½À´Ï´Ù.

°£´ÜÇÑ XPath ½ÄÀÇ ¿¹¸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.

/foo/bar

ÀÌ ¿¹´Â ´ÙÀ½°ú °°Àº XML ¹®¼­ÀÇ <bar> ¿ä¼Ò¸¦ ¼±ÅÃÇÕ´Ï´Ù.

<foo><bar/></foo>

½Ä /foo/bar´Â ·ÎÄÉÀÌ¼Ç ÆнºÀÇ ¿¹ÀÔ´Ï´Ù. XPath ·ÎÄÉÀÌ¼Ç Æнº´Â Unix ½ºÅ¸ÀÏÀÇ ÆÄÀÏ ½Ã½ºÅÛ Æнº¸¦ ´à¾Æ ÀÖ½À´Ï´Ù¸¸, XPath ½Ä¿¡¼­´Â ½Ä¿¡ ¼º³É ÇÏ´Â ¡¸¸ðµç¡¹³ëµå¸¦ µ¹·ÁÁشٰí ÇÏ´Â Á¡ÀÌ Áß¿äÇÑ »óÀ§ÀÔ´Ï´Ù. µû¶ó¼­, /foo/bar ½Ä¿¡ ÀÇÇØ ´ÙÀ½ÀÇ ¹®¼­ÀÇ 3 °³ ¸ðµç <bar> ¿ä¼Ò°¡ ¼±Åõ˴ϴÙ.

<foo><bar/><bar/><bar/></foo>

Ưº°ÇÑ ·ÎÄÉÀÌ¼Ç Æнº ¿¬»êÀÚ, //´Â ±íÀÌ¿¡ °ü°è¾øÀÌ XML ¹®¼­ÀÇ ³ëµå¸¦ ¼±ÅÃÇÕ´Ï´Ù. ¹®¼­³»ÀÇ À§Ä¡¿¡ °ü°è¾øÀÌ, ¸ðµç <bar> ¿ä¼Ò¸¦ ¼±ÅÃÇÏ´Â °æ¿ìÀÇ ¿¹¸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.

//bar

¿ÍÀϵå Ä«µå ¿¬»êÀÚ *¸¦ »ç¿ëÇϸé, ¸ðµç ¿ä¼Ò ³ëµå°¡ ¼±Åõ˴ϴÙ. <foo> ¿ä¼ÒÀÇ ¸ðµçÀÚ½Ä ¿ä¼Ò¸¦ ¼±ÅÃÇÏ´Â ¿¹¸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.

/foo/*

XPath ·ÎÄÉÀÌ¼Ç Æнº´Â ¿ä¼Ò ³ëµå »Ó¸¸ÀÌ ¾Æ´Ï¶ó, ¼Ó¼º ³ëµå, ÅؽºÆ® ³ëµå, ÄÚ¸àÆ® ³ëµå ¹× ó¸®ÀÇ Áö½Ã ³ëµå¸¦ ÁÖ¼Ò ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °¢ ³ëµåÇü¿¡ ´ëÇÑ ·ÎÄÉÀÌ¼Ç ÆнºÀÇ ¿¹¸¦ ´ÙÀ½ÀÇ °Ñ(Ç¥)¿¡ ³ªÅ¸³À´Ï´Ù.

·ÎÄÉÀÌ¼Ç Æнº¼³¸í
/foo/bar/@id<bar> ¿ä¼ÒÀÇ ¼Ó¼º id¸¦ ¼±ÅÃ
/foo/bar/text()<bar> ¿ä¼ÒÀÇ ÅؽºÆ® ³ëµå¸¦ ¼±ÅÃ. À̽ºÄÉÀÌÇÁ µÈ ¹®ÀÚ µ¥ÀÌÅÍ¿Í À̽ºÄÉÀÌÇÁµÇ¾î ÀÖÁö ¾ÊÀº ¹®ÀÚ µ¥ÀÌÅÍ¿¡ Â÷ÀÌ´Â ¾ø´Â
/foo/bar/comment()<bar> ¿ä¼Ò¿¡ Æ÷ÇԵǴ ¸ðµç ÄÚ¸àÆ® ³ëµå¸¦ ¼±ÅÃ
/foo/bar/processing-instruction()<bar> ¿ä¼Ò¿¡ Æ÷ÇԵǴ ¸ðµç ó¸®ÀÇ Áö½Ã ³ëµå¸¦ ¼±ÅÃ

ÇÁ·¹µðÄÉÀÌÆ®¿¡¼­´Â XPath ·ÎÄÉÀÌ¼Ç Æнº·Î ¼±ÅÃµÈ ³ëµå¸¦ ¼¼·Ã ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ÇÁ·¹µðÄÉÀÌÆ®´Â [expression] Çü½ÄÀ» ÃëÇÕ´Ï´Ù. true°ªÀ» °¡Áö´Â include ¼Ó¼ºÀ» Æ÷ÇÔÇÑ ¸ðµç <foo> ¿ä¼Ò¸¦ ¼±ÅÃÇÏ´Â ¿¹¸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.

//foo[@include='true']

ÇÁ·¹µðÄÉÀÌÆ®¸¦ ´ÙÀ½°ú °°ÀÌ Ãß°¡ÇØ, ½ÄÀ» ¶ÇÇÑ ¼¼·Ã ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

//foo[@include='true'][@mode='bar']

XPath API »ç¿ë

XPath API¸¦ »ç¿ëÇØ, XML ¹®¼­·ÎºÎÅÍ 1°³ ¶Ç´Â º¹¼öÀÇ ³ëµå¸¦ ¼±ÅÃÇÏ´Â °æ¿ìÀÇ ¿¹¸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.

XPath xpath = XPathFactory.newInstance(). newXPath() ;String expression = "/widgets/widget";InputSource inputSource = new InputSource("widgets.xml") ;NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);

XPath ½Ä ¹× ÇüÅÂ

XPath ½ÄÀº XML ¹®¼­ÀÇ ³ëµå¸¦ ¼±ÅÃÇÕ´Ï´Ù¸¸, XPath API´Â ¼±ÅÃµÈ ³ëµå¸¦ ´ÙÀ½¿¡ ³ªÅ¸³»´Â ´Ù¸¥ µ¥ÀÌÅÍÇüÀÇ ¾î´À ÂÊÀΰ¡¿¡ ÇÕü ½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù.

¹Ù¶÷Á÷ÇÑ ¹Ýȯ°ªÀÇ ÇüÅ´ ½ÄÀ» Æò°¡Çϱâ À§Çؼ­ »ç¿ëµÈ ¸Þ¼­µå È£Ãâ QName ÆĶó¹ÌÅÍ·Î ÁöÁ¤µÇ°í ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº, XPathExpression.evalute(...) È£ÃâÀΰ¡XPath.evaluate(...) °£ÀÌ ¸Þ¼­µåÀÇ 1°³°¡ µË´Ï´Ù. Çã°¡µÇ´Â QName Ä¡´Â ´ÙÀ½°ú °°ÀÌ XPathConstants Ŭ·¡½ºÀÇ Á¤¼ö·Î¼­ ÁöÁ¤µÇ°í ÀÖ½À´Ï´Ù.

Boolean Çü ¹Ýȯ°ªÀÌ ¿ä±¸µÇ¸é, 1°³ ¶Ç´Â º¹¼öÀÇ ³ëµå°¡ ¼±Åõǰí ÀÖ´Â °æ¿ì´ÂBoolean.TRUE°¡ µ¹·ÁÁÖ°íÁ® ±×·¸Áö ¾ÊÀº °æ¿ì´ÂBoolean.FALSE°¡ ¸®Åϵ˴ϴ٠.

String ¹Ýȯ°ªÇüÀº ÅؽºÆ® ³ëµå, ¼Ó¼º ³ëµå, ÄÚ¸àÆ® ³ëµå, ¶Ç´Â ó¸®ÀÇ Áö½Ã ³ëµå·ÎºÎÅÍ ¹®ÀÚ µ¥ÀÌÅ͸¦ ¾ò´ÂÀÎ °æ¿ì¿¡ Æí¸®ÇÕ´Ï´Ù. ¿ä¼Ò ³ëµå¿¡ »ç¿ëÇϸé,ÀÚ½Ä ÅؽºÆ® ³ëµåÀÇ °ªÀÌ ¸®Åϵ˴ϴ٠.

Number ¹Ýȯ°ªÇüÀº ³ëµåÀÇ ÅؽºÆ®¸¦ double µ¥ÀÌÅÍÇü¿¡ ÇÕü ½Ãŵ´Ï´Ù.

XPath ÄÁÅؽºÆ®

XPath ·ÎÄÉÀÌ¼Ç Æнº´Â context·Î ºÒ¸®´Â ¹®¼­¾ÈÀÇ Æ¯Á¤ÀÇ ³ëµå¿¡ °ü·ÃµÈ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ XML ¹®¼­¸¦ ºÁ ÁÖ¼¼¿ä.

<widgets><widget><manufacturer/><dimensions/></widget></widgets>

´ÙÀ½ÀÇ XPath API ÄÚµå·Î<widget> ¿ä¼Ò¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù .

// parse the XML as a W3C DocumentDocumentBuilder builder = DocumentBuilderFactory.newInstance(). newDocumentBuilder() ;Document document = builder.parse(new File("/widgets.xml"));
XPath xpath = XPathFactory.newInstance(). newXPath() ;String expression = "/widgets/widget";Node widgetNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);

<widget> ¿ä¼Ò¿¡ÀÇ ÂüÁ¶°¡ ÀÖÀ¸¸é, °ü·ÃµÈ XPath ½ÄÀ» ´ÙÀ½°ú °°ÀÌ ½á, <manufacturer> ÀÚ ¿ä¼Ò¸¦ ¼±ÅÃÇϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.

XPath xpath = XPathFactory.newInstance(). newXPath();String expression = "manufacturer";Node manufacturerNode = (Node) xpath.evaluate(expression, widgetNode, XPathConstants.NODE);


JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.