锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产成人久久综合一 ,亚洲爆乳少妇无码激情,婷婷亚洲天堂影院http://m.tkk7.com/rain1102/category/15291.html<b><font color="#3C1435">08騫村鏂楃洰鏍囷細</font><font color="maroon">璧氶挶涔頒釜鎴垮瓙錛?lt;/font></b>zh-cnSat, 29 Mar 2008 08:27:25 GMTSat, 29 Mar 2008 08:27:25 GMT60RSShttp://m.tkk7.com/rain1102/articles/176345.htmlEric.ZhouEric.ZhouFri, 18 Jan 2008 14:14:00 GMThttp://m.tkk7.com/rain1102/articles/176345.htmlhttp://m.tkk7.com/rain1102/comments/176345.htmlhttp://m.tkk7.com/rain1102/articles/176345.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/176345.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/176345.html闃呰鍏ㄦ枃

Eric.Zhou 2008-01-18 22:14 鍙戣〃璇勮
]]>
XML/XSL-FOhttp://m.tkk7.com/rain1102/articles/176203.htmlEric.ZhouEric.ZhouFri, 18 Jan 2008 06:36:00 GMThttp://m.tkk7.com/rain1102/articles/176203.htmlhttp://m.tkk7.com/rain1102/comments/176203.htmlhttp://m.tkk7.com/rain1102/articles/176203.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/176203.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/176203.html闃呰鍏ㄦ枃

Eric.Zhou 2008-01-18 14:36 鍙戣〃璇勮
]]>
Schema (XSD) 鏁欑▼http://m.tkk7.com/rain1102/articles/175861.htmlEric.ZhouEric.ZhouThu, 17 Jan 2008 02:53:00 GMThttp://m.tkk7.com/rain1102/articles/175861.htmlhttp://m.tkk7.com/rain1102/comments/175861.htmlhttp://m.tkk7.com/rain1102/articles/175861.html#Feedback2http://m.tkk7.com/rain1102/comments/commentRss/175861.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/175861.htmlSchema (XSD) 鏁欑▼


Eric.Zhou 2008-01-17 10:53 鍙戣〃璇勮
]]>
Java 璇█鐨?XPath APIhttp://m.tkk7.com/rain1102/articles/70267.htmlEric.ZhouEric.ZhouMon, 18 Sep 2006 05:34:00 GMThttp://m.tkk7.com/rain1102/articles/70267.htmlhttp://m.tkk7.com/rain1102/comments/70267.htmlhttp://m.tkk7.com/rain1102/articles/70267.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/70267.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/70267.htmlXPath 琛ㄨ揪寮忔瘮綣佺悙鐨勬枃妗e璞℃ā鍨嬶紙DOM錛夊鑸唬鐮佽瀹規槗緙栧啓寰楀銆傚鏋滈渶瑕佷粠 XML 鏂囨。涓彁鍙栦俊鎭紝鏈蹇嵎銆佹渶綆鍗曠殑鍔炴硶灝辨槸鍦?Java鈩?紼嬪簭涓祵鍏?XPath 琛ㄨ揪寮忋侸ava 5 鎺ㄥ嚭浜?javax.xml.xpath 鍖咃紝榪欐槸涓涓敤浜?XPath 鏂囨。鏌ヨ鐨勭嫭绔嬩簬 XML 瀵硅薄妯″瀷鐨勫簱銆?/blockquote>

濡傛灉瑕佸憡璇夊埆浜轟拱涓鍔犱粦鐗涘ザ錛屾偍浼氭庝箞璇達紵鈥滆鍘諱拱涓鍔犱粦鐗涘ザ鍥炴潵鈥?榪樻槸 鈥滀粠鍓嶉棬鍑哄幓錛屽悜宸﹁漿錛岃蛋涓変釜琛楀尯鍚戝彸杞紝鍐嶈蛋鍗婁釜琛楀尯鍚戝彸杞繘鍏ュ晢搴椼傝蛋鍚戝洓鍙烽氶亾錛屾部閫氶亾璧頒簲綾沖悜宸︼紝鎷夸竴鐡朵竴鍔犱粦瑁呯殑鐗涘ザ鐒跺悗鍒版敹閾跺彴浠樻銆傚啀娌垮師璺洖瀹躲傗?綆鐩村お鍙瑧浜嗐傚彧瑕佸湪 鈥滆鍘諱拱涓鍔犱粦鐗涘ザ鍥炴潵鈥?鐨勫熀紜涓婄◢鍔犳寚紺猴紝澶氭暟鎴愪漢閮借兘鑷繁涔板洖鐗涘ザ鏉ャ?

鏌ヨ璇█鍜岃綆楁満鎼滅儲涓庢綾諱技銆傜洿鎺ヨ 鈥滄壘涓涓?Cryptonomicon 鐨勫壇鏈?瑕佹瘮緙栧啓鎼滅儲鏌愪釜鏁版嵁搴撶殑璇︾粏閫昏緫瀹規槗寰楀銆傜敱浜庢悳绱㈡搷浣滅殑閫昏緫闈炲父鐩鎬技錛屽彲浠ュ彂鏄庝竴縐嶉氱敤璇█璁╂偍浣跨敤 鈥滄壘鍒?Neal Stephenson 鐨勬墍鏈夎憲浣溾?榪欐牱鐨勫懡浠わ紝鐒跺悗緙栧啓瀵圭壒瀹氭暟鎹瓨鍌ㄦ墽琛屾綾繪煡璇㈢殑寮曟搸銆?

XPath

鍦ㄤ紬澶氭煡璇㈣璦涔嬩腑錛岀粨鏋勫寲鏌ヨ璇█錛圫QL錛夋槸涓縐嶉拡瀵規煡璇㈢壒瀹氱被鍨嬬殑鍏崇郴搴撹岃璁″拰浼樺寲鐨勮璦銆傚叾浠栦笉閭d箞甯歌鐨勬煡璇㈣璦榪樻湁瀵硅薄鏌ヨ璇█錛圤QL錛夊拰 XQuery銆備絾鏈枃鐨勪富棰樻槸 XPath錛屼竴縐嶄負鏌ヨ XML 鏂囨。鑰岃璁$殑鏌ヨ璇█銆傛瘮濡傦紝涓嬮潰榪欎釜綆鍗曠殑 XPath 鏌ヨ鍙互鍦ㄦ枃妗d腑鎵懼埌浣滆呬負 Neal Stephenson 鐨勬墍鏈夊浘涔︾殑鏍囬錛?/p>
//book[author="Neal Stephenson"]/title

浣滀負瀵圭収錛屾煡璇㈠悓鏍蜂俊鎭殑綰?DOM 鎼滅儲浠g爜濡?娓呭崟 1 鎵紺猴細


娓呭崟 1. 鎵懼埌 Neal Stephenson 鎵鏈夎憲浣?title 鍏冪礌鐨?DOM 浠g爜
        ArrayList result = new ArrayList();
        NodeList books = doc.getElementsByTagName("book");
        for (int i = 0; i < books.getLength(); i++) {
            Element book = (Element) books.item(i);
            NodeList authors = book.getElementsByTagName("author");
            boolean stephenson = false;
            for (int j = 0; j < authors.getLength(); j++) {
                Element author = (Element) authors.item(j);
                NodeList children = author.getChildNodes();
                StringBuffer sb = new StringBuffer();
                for (int k = 0; k < children.getLength(); k++) {
                    Node child = children.item(k);
                    // really should to do this recursively
                    if (child.getNodeType() == Node.TEXT_NODE) {
                        sb.append(child.getNodeValue());
                    }
                }
                if (sb.toString().equals("Neal Stephenson")) {
                    stephenson = true;
                    break;
                }

            }

            if (stephenson) {
                NodeList titles = book.getElementsByTagName("title");
                for (int j = 0; j < titles.getLength(); j++) {
                    result.add(titles.item(j));
                }
            }

        }

涓嶈鎮ㄦ槸鍚︾浉淇★紝娓呭崟 1 涓殑 DOM 鏄劇劧涓嶅綆鍗曠殑 XPath 琛ㄨ揪寮忛氱敤鎴栬呭仴澹傛偍鎰挎剰緙栧啓銆佽皟璇曞拰緇存姢鍝竴涓紵鎴戞兂絳旀寰堟槑鏄俱?

浣嗘槸铏界劧鏈夊緢寮虹殑琛ㄨ揪鑳藉姏錛孹Path 騫朵笉鏄?Java 璇█錛屼簨瀹炰笂 XPath 涓嶆槸涓縐嶅畬鏁寸殑緙栫▼璇█銆傛湁寰堝涓滆タ鐢?XPath 琛ㄨ揪涓嶅嚭鏉ワ紝鐢氳嚦鏈変簺鏌ヨ涔熸棤娉曡〃杈俱傛瘮鏂硅錛孹Path 涓嶈兘鏌ユ壘鍥介檯鏍囧噯鍥句功緙栫爜錛圛SBN錛夋楠岀爜涓嶅尮閰嶇殑鎵鏈夊浘涔︼紝鎴栬呮壘鍑哄澶栧笎鎴鋒暟鎹簱鏄劇ず嬈犲笎鐨勬墍鏈変綔鑰呫傚垢榪愮殑鏄紝鍙互鎶?XPath 緇撳悎鍒?Java 紼嬪簭涓紝榪欐牱灝辮兘鍙戞尌涓よ呯殑浼樺娍浜嗭細Java 鍋?Java 鎵鎿呴暱鐨勶紝XPath 鍋?XPath 鎵鎿呴暱鐨勩?

鐩村埌鏈榪戯紝Java 紼嬪簭鎵ц XPath 鏌ヨ鎵闇瑕佺殑搴旂敤紼嬪簭緙栫▼鎺ュ彛錛圓PI錛夎繕鍥犲艦褰㈣壊鑹茬殑 XPath 寮曟搸鑰屽悇涓嶇浉鍚屻俋alan 鏈変竴縐?API錛孲axon 浣跨敤鍙︿竴縐嶏紝鍏朵粬寮曟搸鍒欎嬌鐢ㄥ叾浠栫殑 API銆傝繖鎰忓懗鐫浠g爜寰寰鎶婃偍闄愬埗鍒頒竴縐嶄駭鍝佷笂銆傜悊鎯蟲儏鍐典笅錛屾渶濂借兘澶熻瘯楠屽叿鏈変笉鍚屾ц兘鐗圭偣鐨勫悇縐嶅紩鎿庯紝鑰屼笉浼氬甫鏉ヤ笉閫傚綋鐨勯夯鐑︽垨鑰呴噸鏂扮紪鍐欎唬鐮併?

浜庢槸錛孞ava 5 鎺ㄥ嚭浜?javax.xml.xpath 鍖咃紝鎻愪緵涓涓紩鎿庡拰瀵硅薄妯″瀷鐙珛鐨?XPath 搴撱傝繖涓寘涔熷彲鐢ㄤ簬 Java 1.3 鍙婁互鍚庣殑鐗堟湰錛屼絾闇瑕佸崟鐙畨瑁?Java API for XML Processing (JAXP) 1.3銆俋alan 2.7 鍜?Saxon 8 浠ュ強鍏朵粬浜у搧鍖呭惈浜嗚繖涓簱鐨勫疄鐜般?





鍥為〉棣?/font>


涓涓畝鍗曠殑渚嬪瓙

鎴戝皢涓句緥璇存槑濡備綍浣跨敤瀹冦傜劧鍚庡啀璁ㄨ涓浜涚粏鑺傞棶棰樸傚亣璁捐鏌ヨ涓涓浘涔﹀垪琛紝瀵繪壘 Neal Stephenson 鐨勮憲浣溿傚叿浣撴潵璇達紝榪欎釜鍥句功鍒楄〃鐨勫艦寮忓 娓呭崟 2 鎵紺猴細


娓呭崟 2. 鍖呭惈鍥句功淇℃伅鐨?XML 鏂囨。
<inventory>
    <book year="2000">
        <title>Snow Crash</title>
        <author>Neal Stephenson</author>
        <publisher>Spectra</publisher>
        <isbn>0553380958</isbn>
        <price>14.95</price>
    </book>
 
    <book year="2005">
        <title>Burning Tower</title>
        <author>Larry Niven</author>
        <author>Jerry Pournelle</author>
        <publisher>Pocket</publisher>
        <isbn>0743416910</isbn>
        <price>5.99</price>
    <book>
 
    <book year="1995">
        <title>Zodiac</title>
        <author>Neal Stephenson<author>
        <publisher>Spectra</publisher>
        <isbn>0553573862</isbn>
        <price>7.50</price>
    <book>

    <!-- more books... -->
 
</inventory>

鎶借薄宸ュ巶

XPathFactory 鏄竴涓娊璞″伐鍘傘傛娊璞″伐鍘傝璁℃ā寮忎嬌寰楄繖涓縐?API 鑳藉鏀寔涓嶅悓鐨勫璞℃ā鍨嬶紝濡?DOM銆丣DOM 鍜?XOM銆備負浜嗛夋嫨涓嶅悓鐨勬ā鍨嬶紝闇瑕佸悜 XPathFactory.newInstance() 鏂規硶浼犻掓爣璇嗗璞℃ā鍨嬬殑緇熶竴璧勬簮鏍囪瘑絎︼紙URI錛夈傛瘮濡?http://xom.nu/ 鍙互閫夋嫨 XOM銆備絾瀹為檯涓婏紝鍒扮洰鍓嶄負姝?DOM 鏄 API 鏀寔鐨勬儫涓瀵硅薄妯″瀷銆?

鏌ユ壘鎵鏈夊浘涔︾殑 XPath 鏌ヨ闈炲父綆鍗曪細//book[author="Neal Stephenson"]銆備負浜嗘壘鍑鴻繖浜涘浘涔︾殑鏍囬錛屽彧瑕佸鍔犱竴姝ワ紝琛ㄨ揪寮忓氨鍙樻垚浜?//book[author="Neal Stephenson"]/title銆傛渶鍚庯紝鐪熸闇瑕佺殑鏄?title 鍏冪礌鐨勬枃鏈妭鐐瑰瀛愩傝繖灝辮姹傚啀澧炲姞涓姝ワ紝瀹屾暣鐨勮〃杈懼紡灝辨槸 //book[author="Neal Stephenson"]/title/text()銆?

鐜板湪鎴戞彁渚涗竴涓畝鍗曠殑紼嬪簭錛屽畠浠?Java 璇█涓墽琛岃繖涓煡璇紝鐒跺悗鎶婃壘鍒扮殑鎵鏈夊浘涔︾殑鏍囬鎵撳嵃鍑烘潵銆傞鍏堬紝闇瑕佸皢鏂囨。鍔犺澆鍒頒竴涓?DOM Document 瀵硅薄涓備負浜嗙畝鍖栬搗瑙侊紝鍋囪璇ユ枃妗e湪褰撳墠宸ヤ綔鐩綍鐨?books.xml 鏂囦歡涓備笅闈㈢殑綆鍗曚唬鐮佺墖孌佃В鏋愭枃妗e茍寤虹珛瀵瑰簲鐨?Document 瀵硅薄錛?


娓呭崟 3. 鐢?JAXP 瑙f瀽鏂囨。
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true); // never forget this!
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("books.xml");

鍒扮洰鍓嶄負姝紝榪欎粎浠呮槸鏍囧噯鐨?JAXP 鍜?DOM錛屾病鏈変粈涔堟柊椴滅殑銆?

鎺ヤ笅鏉ュ垱寤?XPathFactory錛?/p>
XPathFactory factory = XPathFactory.newInstance();

鐒跺悗浣跨敤榪欎釜宸ュ巶鍒涘緩 XPath 瀵硅薄錛?

XPath xpath = factory.newXPath();

XPath 瀵硅薄緙栬瘧 XPath 琛ㄨ揪寮忥細

PathExpression expr = xpath.compile("http://book[author='Neal Stephenson']/title/text()");

鐩存帴姹傚?/b>

濡傛灉 XPath 琛ㄨ揪寮忓彧浣跨敤涓嬈★紝鍙互璺寵繃緙栬瘧姝ラ鐩存帴瀵?XPath 瀵硅薄璋冪敤 evaluate() 鏂規硶銆備絾鏄紝濡傛灉鍚屼竴涓〃杈懼紡瑕侀噸澶嶄嬌鐢ㄥ嬈★紝緙栬瘧鍙兘鏇村揩涓浜涖?

鏈鍚庯紝璁$畻 XPath 琛ㄨ揪寮忓緱鍒扮粨鏋溿傝〃杈懼紡鏄拡瀵圭壒瀹氱殑涓婁笅鏂囪妭鐐硅綆楃殑錛屽湪榪欎釜渚嬪瓙涓槸鏁翠釜鏂囨。銆傝繕蹇呴』鎸囧畾榪斿洖綾誨瀷銆傝繖閲岃姹傝繑鍥炰竴涓妭鐐歸泦錛?

Object result = expr.evaluate(doc, XPathConstants.NODESET);

鍙互灝嗙粨鏋滃己鍒惰漿鍖栨垚 DOM NodeList錛岀劧鍚庨亶鍘嗗垪琛ㄥ緱鍒版墍鏈夌殑鏍囬錛?

        NodeList nodes = (NodeList) result;
        for (int i = 0; i < nodes.getLength(); i++) {
            System.out.println(nodes.item(i).getNodeValue()); 
        }

娓呭崟 4 鎶婁笂榪扮墖孌電粍鍚堝埌浜嗕竴涓▼搴忎腑銆傝繕瑕佹敞鎰忥紝榪欎簺鏂規硶鍙兘鎶涘嚭涓浜涙鏌ュ紓甯革紝榪欎簺寮傚父蹇呴』鍦?throws 瀛愬彞涓0鏄庯紝浣嗘槸鎴戝湪涓婇潰鎶婂畠浠帺鐩栬搗鏉ヤ簡錛?


娓呭崟 4. 鐢ㄥ浐瀹氱殑 XPath 琛ㄨ揪寮忔煡璇?XML 鏂囨。鐨勫畬鏁寸▼搴?/b>
import java.io.IOException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import javax.xml.xpath.*;

public class XPathExample {

  public static void main(String[] args) 
   throws ParserConfigurationException, SAXException, 
          IOException, XPathExpressionException {

    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    domFactory.setNamespaceAware(true); // never forget this!
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse("books.xml");

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expr 
     = xpath.compile("http://book[author='Neal Stephenson']/title/text()");

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue()); 
    }

  }

}

XPath 鏁版嵁妯″瀷

姣忓綋娣峰悎浣跨敤璇稿 XPath 鍜?Java 榪欐牱涓ょ涓嶅悓鐨勮璦鏃訛紝蹇呭畾浼氭湁鏌愪簺灝嗕袱鑰呯矘鍚堝湪涓璧風殑鏄庢樉鎺ョ紳銆傚茍闈炰竴鍒囬兘寰堝悎鎷嶃俋Path 鍜?Java 璇█娌℃湁鍚屾牱鐨勭被鍨嬬郴緇熴俋Path 1.0 鍙湁鍥涚鍩烘湰鏁版嵁綾誨瀷錛?/p>

  • node-set
  • number
  • boolean
  • string

褰撶劧錛孞ava 璇█鏈夋洿澶氱殑鏁版嵁綾誨瀷錛屽寘鎷敤鎴峰畾涔夌殑瀵硅薄綾誨瀷銆?/p>

澶氭暟 XPath 琛ㄨ揪寮忥紝鐗瑰埆鏄綅緗礬寰勶紝閮借繑鍥炶妭鐐歸泦銆備絾鏄繕鏈夊叾浠栧彲鑳姐傛瘮濡傦紝XPath 琛ㄨ揪寮?count(//book) 榪斿洖鏂囨。涓殑鍥句功鏁伴噺銆俋Path 琛ㄨ揪寮?count(//book[@author="Neal Stephenson"]) > 10 榪斿洖涓涓竷灝斿鹼細濡傛灉鏂囨。涓?Neal Stephenson 鐨勮憲浣滆秴榪?10 鏈垯榪斿洖 true錛屽惁鍒欒繑鍥?false銆?

evaluate() 鏂規硶琚0鏄庝負榪斿洖 Object銆傚疄闄呰繑鍥炰粈涔堜緷璧栦簬 XPath 琛ㄨ揪寮忕殑緇撴灉浠ュ強瑕佹眰鐨勭被鍨嬨備竴鑸潵璇達紝XPath 鐨?/p>

  • number 鏄犲皠涓?java.lang.Double
  • string 鏄犲皠涓?java.lang.String
  • boolean 鏄犲皠涓?java.lang.Boolean
  • node-set 鏄犲皠涓?org.w3c.dom.NodeList
XPath 2

鍓嶉潰涓鐩村亣璁炬偍浣跨敤鐨勬槸 XPath 1.0銆俋Path 2 澶уぇ鎵╁睍鍜屼慨鏀逛簡綾誨瀷緋葷粺銆侸ava XPath API 鏀寔 XPath 2 鎵闇鐨勪富瑕佷慨鏀規槸涓鴻繑鍥?XPath 2 鏂版暟鎹被鍨嬪鍔犲父閲忋?

鍦?Java 涓綆?XPath 琛ㄨ揪寮忔椂錛岀浜屼釜鍙傛暟鎸囧畾闇瑕佺殑榪斿洖綾誨瀷銆傛湁浜旂鍙兘錛岄兘鍦?javax.xml.xpath.XPathConstants 綾諱腑鍛藉悕浜嗗父閲忥細

  • XPathConstants.NODESET
  • XPathConstants.BOOLEAN
  • XPathConstants.NUMBER
  • XPathConstants.STRING
  • XPathConstants.NODE

鏈鍚庝竴涓?XPathConstants.NODE 瀹為檯涓婃病鏈夊尮閰嶇殑 XPath 綾誨瀷銆傚彧鏈夌煡閬?XPath 琛ㄨ揪寮忓彧榪斿洖涓涓妭鐐規垨鑰呭彧闇瑕佷竴涓妭鐐規椂鎵嶄嬌鐢ㄥ畠銆傚鏋?XPath 琛ㄨ揪寮忚繑鍥炰簡澶氫釜鑺傜偣騫朵笖鎸囧畾浜?XPathConstants.NODE錛屽垯 evaluate() 鎸夌収鏂囨。欏哄簭榪斿洖絎竴涓妭鐐廣傚鏋?XPath 琛ㄨ揪寮忛夋嫨浜嗕竴涓┖闆嗗茍鎸囧畾浜?XPathConstants.NODE錛屽垯 evaluate() 榪斿洖 null銆?

濡傛灉涓嶈兘瀹屾垚瑕佹眰鐨勮漿鎹紝evaluate() 灝嗘姏鍑?XPathException銆?


鍚嶇О絀洪棿涓婁笅鏂?/font>

鑻?XML 鏂囨。涓殑鍏冪礌鍦ㄥ悕縐扮┖闂翠腑錛屾煡璇㈣鏂囨。鐨?XPath 琛ㄨ揪寮忓繀欏諱嬌鐢ㄧ浉鍚岀殑鍚嶇О絀洪棿銆俋Path 琛ㄨ揪寮忎笉涓瀹氳浣跨敤鐩稿悓鐨勫墠緙錛屽彧闇瑕佸悕縐扮┖闂?URI 鐩稿悓鍗沖彲銆備簨瀹炰笂錛屽鏋?XML 鏂囨。浣跨敤榛樿鍚嶇О絀洪棿錛岄偅涔堝敖綆$洰鏍囨枃妗f病鏈変嬌鐢ㄥ墠緙錛孹Path 琛ㄨ揪寮忎篃蹇呴』浣跨敤鍓嶇紑銆?

浣嗘槸錛孞ava 紼嬪簭涓嶆槸 XML 鏂囨。錛屽洜姝や笉鑳界敤涓鑸殑鍚嶇О絀洪棿瑙f瀽銆傚繀欏繪彁渚涗竴涓璞″皢鍓嶇紑鏄犲皠鍒板悕縐扮┖闂?URI銆傝瀵硅薄鏄?javax.xml.namespace.NamespaceContext 鎺ュ彛鐨勫疄渚嬨傛瘮濡傦紝鍋囪鍥句功鏂囨。鏀懼湪 http://www.example.com/books 鍚嶇О絀洪棿涓紝濡?娓呭崟 5 鎵紺猴細


娓呭崟 5. 浣跨敤榛樿鍚嶇О絀洪棿鐨?XML 鏂囨。
<inventory xmlns="http://www.example.com/books">
    <book year="2000">
        <title>Snow Crash</title>
        <author>Neal Stephenson</author>
        <publisher>Spectra</publisher>
        <isbn>0553380958</isbn>
        <price>14.95<price>
    </book>

    <!-- more books... -->

<inventory>

鏌ユ壘 Neal Stephenson 鍏ㄩ儴钁椾綔鏍囬鐨?XPath 琛ㄨ揪寮忓氨瑕佹敼涓?//pre:book[pre:author="Neal Stephenson"]/pre:title/text()銆備絾鏄紝蹇呴』灝嗗墠緙 pre 鏄犲皠鍒?URI http://www.example.com/books銆?code>NamespaceContext 鎺ュ彛鍦?Java 杞歡寮鍙戝伐鍏風錛圝DK錛夋垨 JAXP 涓病鏈夐粯璁ゅ疄鐜頒技涔庢湁鐐圭錛屼絾紜疄濡傛銆備笉榪囷紝鑷繁瀹炵幇涔熶笉闅俱?a >娓呭崟 6 瀵逛竴涓悕縐扮┖闂寸粰鍑轟簡綆鍗曠殑瀹炵幇銆傝繕闇瑕佹槧灝?xml 鍓嶇紑銆?


娓呭崟 6. 緇戝畾涓涓悕縐扮┖闂村拰榛樿鍚嶇О絀洪棿鐨勭畝鍗曚笂涓嬫枃
import java.util.Iterator;
import javax.xml.*;
import javax.xml.namespace.NamespaceContext;

public class PersonalNamespaceContext implements NamespaceContext {

    public String getNamespaceURI(String prefix) {
        if (prefix == null) throw new NullPointerException("Null prefix");
        else if ("pre".equals(prefix)) return "http://www.example.org/books";
        else if ("xml".equals(prefix)) return XMLConstants.XML_NS_URI;
        return XMLConstants.NULL_NS_URI;
    }

    // This method isn't necessary for XPath processing.
    public String getPrefix(String uri) {
        throw new UnsupportedOperationException();
    }

    // This method isn't necessary for XPath processing either.
    public Iterator getPrefixes(String uri) {
        throw new UnsupportedOperationException();
    }

}

浣跨敤鏄犲皠瀛樺偍緇戝畾鍜屽鍔?setter 鏂規硶瀹炵幇鍚嶇О絀洪棿涓婁笅鏂囩殑閲嶇敤涔熶笉闅俱?

鍒涘緩 NamespaceContext 瀵硅薄鍚庯紝鍦ㄧ紪璇戣〃杈懼紡涔嬪墠灝嗗叾瀹夎鍒?XPath 瀵硅薄涓娿備互鍚庡氨鍙互鍍忎互鍓嶄竴鏍鋒槸鐢ㄨ繖浜涘墠緙鏌ヨ浜嗐傛瘮濡傦細


娓呭崟 7. 浣跨敤鍚嶇О絀洪棿鐨?XPath 鏌ヨ
  XPathFactory factory = XPathFactory.newInstance();
  XPath xpath = factory.newXPath();
  xpath.setNamespaceContext(new PersonalNamespaceContext());
  XPathExpression expr 
    = xpath.compile("http://pre:book[pre:author='Neal Stephenson']/pre:title/text()");

  Object result = expr.evaluate(doc, XPathConstants.NODESET);
  NodeList nodes = (NodeList) result;
  for (int i = 0; i < nodes.getLength(); i++) {
      System.out.println(nodes.item(i).getNodeValue()); 
  }

鍑芥暟姹傝В鍣?/font>

鏈夋椂鍊欙紝鍦?Java 璇█涓畾涔夌敤浜?XPath 琛ㄨ揪寮忕殑鎵╁睍鍑芥暟寰堟湁鐢ㄣ傝繖浜涘嚱鏁板彲浠ユ墽琛岀敤綰?XPath 寰堥毦鎴栬呮棤娉曟墽琛岀殑浠誨姟銆備笉榪囧繀欏繪槸鐪熸鐨勫嚱鏁幫紝鑰屼笉鏄殢鎰忕殑鏂規硶銆傚氨鏄涓嶈兘鏈夊壇浣滅敤銆傦紙XPath 鍑芥暟鍙互鎸夌収浠繪剰鐨勯『搴忔眰鍊間換鎰忓嬈°傦級

閫氳繃 Java XPath API 璁塊棶鐨勬墿灞曞嚱鏁板繀欏誨疄鐜?javax.xml.xpath.XPathFunction 鎺ュ彛銆傝繖涓帴鍙e彧澹版槑浜嗕竴涓柟娉?evaluate錛?

public Object evaluate(List args) throws XPathFunctionException

璇ユ柟娉曞繀欏昏繑鍥?Java 璇█鑳藉杞崲鍒?XPath 鐨勪簲縐嶇被鍨嬩箣涓錛?

  • String
  • Double
  • Boolean
  • Nodelist
  • Node

姣斿錛?a >娓呭崟 8 鏄劇ず浜嗕竴涓墿灞曞嚱鏁幫紝瀹冩鏌?ISBN 鐨勬牎楠屽拰騫惰繑鍥?Boolean銆傝繖涓牎楠屽拰鐨勫熀鏈鍒欐槸鍓嶄節浣嶆暟鐨勬瘡涓浣嶄箻涓婂畠鐨勪綅緗紙鍗崇涓浣嶆暟涔樹笂 1錛岀浜屼綅鏁頒箻涓?2錛屼緷嬈$被鎺級銆傚皢榪欎簺鏁板姞璧鋒潵鐒跺悗鍙栭櫎浠?11 鐨勪綑鏁般傚鏋滀綑鏁版槸 10錛岄偅涔堟渶鍚庝竴浣嶆暟灝辨槸 X銆?


娓呭崟 8. 媯鏌?ISBN 鐨?XPath 鎵╁睍鍑芥暟
import java.util.List;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class ISBNValidator implements XPathFunction {

  // This class could easily be implemented as a Singleton.
    
  public Object evaluate(List args) throws XPathFunctionException {

    if (args.size() != 1) {
      throw new XPathFunctionException("Wrong number of arguments to valid-isbn()");
    }

    String isbn;
    Object o = args.get(0);

    // perform conversions
    if (o instanceof String) isbn = (String) args.get(0);
    else if (o instanceof Boolean) isbn = o.toString();
    else if (o instanceof Double) isbn = o.toString();
    else if (o instanceof NodeList) {
        NodeList list = (NodeList) o;
        Node node = list.item(0);
        // getTextContent is available in Java 5 and DOM 3.
        // In Java 1.4 and DOM 2, you'd need to recursively 
        // accumulate the content.
        isbn= node.getTextContent();
    }
    else {
        throw new XPathFunctionException("Could not convert argument type");
    }

    char[] data = isbn.toCharArray();
    if (data.length != 10) return Boolean.FALSE;
    int checksum = 0;
    for (int i = 0; i < 9; i++) {
        checksum += (i+1) * (data[i]-'0');
    }
    int checkdigit = checksum % 11;

    if (checkdigit + '0' == data[9] || (data[9] == 'X' && checkdigit == 10)) {
        return Boolean.TRUE;
    }
    return Boolean.FALSE;

  }

}

涓嬩竴姝ヨ榪欎釜鎵╁睍鍑芥暟鑳藉鍦?Java 紼嬪簭涓嬌鐢ㄣ備負姝わ紝闇瑕佸湪緙栬瘧琛ㄨ揪寮忎箣鍓嶅悜 XPath 瀵硅薄瀹夎 javax.xml.xpath.XPathFunctionResolver銆傚嚱鏁版眰瑙e櫒灝嗗嚱鏁扮殑 XPath 鍚嶇О鍜屽悕縐扮┖闂?URI 鏄犲皠鍒板疄鐜拌鍑芥暟鐨?Java 綾匯?a >娓呭崟 9 鏄竴涓畝鍗曠殑鍑芥暟姹傝В鍣紝灝嗘墿灞曞嚱鏁?valid-isbn 鍜屽悕縐扮┖闂?http://www.example.org/books 鏄犲皠鍒?娓呭崟 8 涓殑綾匯傛瘮濡傦紝XPath 琛ㄨ揪寮?//book[not(pre:valid-isbn(isbn))] 鍙互鎵懼埌 ISBN 鏍¢獙鍜屼笉鍖歸厤鐨勬墍鏈夊浘涔︺?


娓呭崟 9. 璇嗗埆 valid-isbn 鎵╁睍鍑芥暟鐨勪笂涓嬫枃
iimport javax.xml.namespace.QName;
import javax.xml.xpath.*;

public class ISBNFunctionContext implements XPathFunctionResolver {

  private static final QName name 
   = new QName("http://www.example.org/books", "valid-isbn");

  public XPathFunction resolveFunction(QName name, int arity) {
      if (name.equals(ISBNFunctionContext.name) && arity == 1) {
          return new ISBNValidator();
      }
      return null;
  }

}

鐢變簬鎵╁睍鍑芥暟蹇呴』鏈夊悕縐扮┖闂達紝鎵浠ヨ綆楀寘鍚墿灞曞嚱鏁扮殑琛ㄨ揪寮忔椂蹇呴』浣跨敤 NamespaceResolver錛屽嵆渚挎煡璇㈢殑鏂囨。娌℃湁浣跨敤浠諱綍鍚嶇О絀洪棿銆傜敱浜?XPathFunctionResolver銆?code>XPathFunction 鍜?NamespaceResolver 閮芥槸鎺ュ彛錛屽鏋滄柟渚跨殑璇濆彲浠ュ皢瀹冧滑鏀懼湪鎵鏈夌殑綾諱腑銆?


緇撴潫璇?/font>

鐢?SQL 鍜?XPath 榪欐牱鐨勫0鏄庢ц璦緙栧啓鏌ヨ錛岃姣斾嬌鐢?Java 鍜?C 榪欐牱鐨勫懡浠ゅ紡璇█瀹規槗寰楀銆備絾鏄紝鐢?Java 鍜?C 榪欐牱鐨勫浘鐏靛畬鏁磋璦緙栧啓澶嶆潅鐨勯昏緫錛屽張姣?SQL 鍜?XPath 榪欐牱鐨勫0鏄庢ц璦瀹規槗寰楀銆傛墍騫哥殑鏄紝閫氳繃浣跨敤 Java Database Connectivity (JDBC) 鍜?javax.xml.xpath 涔嬬被鐨?API 鍙互灝嗕袱鑰呯粨鍚堣搗鏉ャ傞殢鐫涓栫晫涓婅秺鏉ヨ秺澶氱殑鏁版嵁杞悜 XML錛?code>javax.xml.xpath 灝嗕笌 java.sql 涓鏍峰彉寰楄秺鏉ヨ秺閲嶈銆?/p>

Eric.Zhou 2006-09-18 13:34 鍙戣〃璇勮
]]>
XPath鐨勮娉?/title><link>http://m.tkk7.com/rain1102/articles/70209.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 18 Sep 2006 01:18:00 GMT</pubDate><guid>http://m.tkk7.com/rain1102/articles/70209.html</guid><wfw:comment>http://m.tkk7.com/rain1102/comments/70209.html</wfw:comment><comments>http://m.tkk7.com/rain1102/articles/70209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/rain1102/comments/commentRss/70209.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/rain1102/services/trackbacks/70209.html</trackback:ping><description><![CDATA[     鎽樿: 褰撳墠浣嶇疆 褰撴垜浠嬌鐢╔SLT澶勭悊XML婧愭枃妗f槸錛屾垜浠敤Context鏉ヨ〃紺哄綋鍓嶆鍦ㄨ妯℃澘澶勭悊鐨勮妭鐐逛綅緗傛瘮濡倄sl:template match="/"璇彞涓〃紺篊ontext鍦ㄦ枃妗g殑鏍?root)鑺傜偣銆傛垜涓嶇煡閬撳浣曞噯紜殑緲昏瘧Context榪欎釜璇嶏紝瀹冪被浼間簬C璇█閲岀殑鎸囬拡錛岃〃紺虹▼搴忓綋鍓嶈繍琛岀殑浣嶇疆銆傜悊瑙ontext瀵逛簬姝g‘澶勭悊XSL妯℃澘闈炲父閲嶈錛屽綋鎮ㄧ殑XSL妯℃澘杈撳嚭鐨勬枃妗e拰鎮ㄦ兂瑕佺殑涓嶄竴鏍鳳紝鏈鍏?..  <a href='http://m.tkk7.com/rain1102/articles/70209.html'>闃呰鍏ㄦ枃</a><img src ="http://m.tkk7.com/rain1102/aggbug/70209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/rain1102/" target="_blank">Eric.Zhou</a> 2006-09-18 09:18 <a href="http://m.tkk7.com/rain1102/articles/70209.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>xsl榪囩▼瑙f瀽http://m.tkk7.com/rain1102/articles/70207.htmlEric.ZhouEric.ZhouMon, 18 Sep 2006 01:14:00 GMThttp://m.tkk7.com/rain1102/articles/70207.htmlhttp://m.tkk7.com/rain1102/comments/70207.htmlhttp://m.tkk7.com/rain1102/articles/70207.html#Feedback0http://m.tkk7.com/rain1102/comments/commentRss/70207.htmlhttp://m.tkk7.com/rain1102/services/trackbacks/70207.html<?xml version="1.0" encoding="iso-8859-1"?>

榪欐槸鏍囧噯鐨刋ML鏂囨。鐨勯琛屼唬鐮侊紝鍥犱負XSLT鏈韓涔熸槸XML鏂囨。銆?br />encoding灞炴х敤鏉ュ畾涔夋枃妗d嬌鐢ㄧ殑緙栫爜褰㈠紡錛宨so-8859-1涓昏鏀寔瑗挎鍜屽寳緹庣殑璇█緙栫爜銆?br />濡傛灉浣犳兂浣跨敤綆浣撲腑鏂囷紝閭d箞灝卞簲璇ュ啓鎴愶細

<?xml version="1.0" encoding="GB2312"?>

鎺ヤ笅鍘葷殑浠g爜鏄?

<xsl:stylesheet聽 xmlns:xsl="

榪欐槸鏍囧噯鐨刋SLT鏂囦歡棣栬浠g爜銆倄sl:stylesheet浠g爜鐨勬剰鎬濇槸灝嗘枃妗d綔涓轟竴涓牱寮忚〃鏉?stylesheet)澶勭悊銆?br />xmlns:xsl灞炴ф槸涓涓悕瀛楃┖闂村0鏄庯紝鍜孹ML涓殑鍚嶅瓧絀洪棿浣跨敤鏂規硶涓鏍鳳紝鐢ㄦ潵闃叉鍏冪礌鍚嶇О閲嶅鍜屾販涔便?br />鍏朵腑鍓嶇紑xsl鐨勬剰鎬濇槸鏂囨。涓嬌鐢ㄧ殑鍏冪礌閬靛畧W3C鐨刋SLT瑙勮寖銆?br />鏈鍚庣殑version灞炴ц鏄庢牱寮忚〃鍙噰鐢╔SLT 1.0鐨勬爣鍑嗗姛鑳斤紝榪欎篃鏄洰鍓嶄粎鏈夌殑鏍囧噯銆?/p>

<xsl:template match="/">

涓涓?lt;xsl:template>鍏冪礌瀹氫箟涓涓ā鏉胯鍒欍傚睘鎬atch="/"璇存槑XML婧愭枃妗d腑錛岃繖涓ā鏉胯鍒欎綔鐢ㄧ殑璧風偣銆?/"鏄竴縐峏Path璇硶錛屾垜浠湪鍚庨潰灝嗚緇嗚榪幫紝榪欓噷鐨?/"浠h〃XML緇撴瀯鏍戠殑鏍?root)銆?/p>

鎺ヤ笅鍘葷殑浠g爜鏄?

<html>

<head>

<title>First XSLT Example</title>

</head>

<body>

<p><xsl:value-of select="greeting"/></p>

</body>

</html>

璇存槑錛氬綋妯℃澘瑙勫垯琚Е鍙戯紝妯℃澘鐨勫唴瀹瑰氨浼氭帶鍒惰緭鍑虹殑緇撴灉銆備緥瀛愪腑錛屾ā鏉垮ぇ閮ㄥ垎鍐呭鐢盚TML鍏?br />绱犲拰鏂囨湰鏋勬垚銆傚彧鏈?lt;xsl:value-of>鍏冪礌鏄疿SLT璇硶錛岃繖閲?lt;xsl:value-of>鐨勪綔鐢ㄦ槸鎷瘋礉鍘熸枃妗d腑鐨?br />涓涓妭鐐圭殑鍊煎埌杈撳嚭鏂囨。銆傝宻elect灞炴у垯璇︾粏鎸囧畾瑕佸鐞嗙殑鑺傜偣鍚嶇О銆傝繖鏄疿Path璇硶錛?greeting"
鐨勬剰鎬濆氨鏄鎵炬牴鑺傜偣鍚嶄負greeting鐨勫厓绱狅紝騫剁敤妯℃澘鏉ュ鐞嗚繖涓妭鐐廣傚叿浣撶殑灝辨槸鎵懼埌<greeting>
鍏冪礌錛岀劧鍚庡皢鍏冪礌鐨勫?hello world"鎸夋ā鏉挎牱寮忔嫹璐濆埌杈撳嚭鏂囦歡銆?

鎻愮ず錛氱敱浜嶺ML鏂囨。鏄弗鏍肩殑灞傜駭緇撴瀯(鐢↖E5鏌ョ湅XML鏂囦歡錛屼細鐪嬭XML鏂囨。綾諱技澶氱駭鍏寵仈鑿滃崟)錛?br />鎵浠ユ垜浠艦璞$殑縐癤ML鏂囨。涓烘枃妗f爲錛屽叾涓瘡涓瀵瑰厓绱犵О浣滄爲鐨勪竴涓妭鐐廣傛牴鍏冪礌灝辨槸鏍硅妭鐐廣?/p>

鏈鍚庡叧闂墍鏈夊厓绱狅細

</xsl:template>

</xsl:stylesheet>



Eric.Zhou 2006-09-18 09:14 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 456亚洲人成影院在线观| 亚洲综合在线另类色区奇米| 亚洲精品中文字幕乱码影院| 久久青草国产免费观看| 国产偷窥女洗浴在线观看亚洲 | 亚洲AV成人潮喷综合网| 亚洲AV色欲色欲WWW| 卡一卡二卡三在线入口免费| 亚洲av无码专区在线观看下载 | 国产大片51精品免费观看| 亚洲av无码一区二区三区在线播放 | 一级毛片免费播放男男| 亚洲国产午夜精品理论片在线播放| 精品福利一区二区三区免费视频| 亚洲神级电影国语版| 国产h视频在线观看网站免费| 亚洲国产成人九九综合| 好吊妞788免费视频播放| 亚洲另类自拍丝袜第五页| 波多野结衣视频在线免费观看| 精品久久久久久亚洲中文字幕| 免费观看亚洲人成网站| 羞羞视频免费网站日本| 亚洲精品成人网站在线观看| 日韩免费无码一区二区三区| 亚洲自偷自偷在线成人网站传媒| 青青青国产免费一夜七次郎| 七次郎成人免费线路视频| 久久亚洲精品中文字幕无码| 一级做受视频免费是看美女| 亚洲精品无码久久久久sm| 67pao强力打造国产免费| 亚洲精品无码不卡在线播放| 2048亚洲精品国产| 久久99国产乱子伦精品免费| 亚洲熟妇AV日韩熟妇在线| 精品国产日韩亚洲一区| 国产精品永久免费10000| 国产天堂亚洲精品| 亚洲网站在线观看| 日本一道在线日本一道高清不卡免费 |