<proxy>µÄserviceUrlÊôÐÔÖ¸¶¨ÁËYahoo! Weather ServiceµÄURL¡£
GetWeather·½·¨Öж¨ÒåÁËÉÏÃæÁгöÀ´µÄpºÍuÁ½¸ö²ÎÊý£¬ÆäÖÐu²ÎÊýÎÒÃÇÖ¸¶¨ÁËËüµÄĬÈÏֵΪc£¨´ú±íÉãÊ϶ȣ©£¬p²ÎÊý½«Óɵ÷ÓÃÕ߸ºÔð´«¹ýÀ´¡£
дµ½ÕâÒ»²½ÆäʵҲ¹»ÁË£¬¿Í»§¶Ë½«ÊÕµ½ÉÏÃæä¯ÀÀÆ÷Öп´µ½µÄÄÇÒ»¶ÎXML String£¬²¢ÇÒ¿ÉÒÔÔÚ¿Í»§¶Ë½øÐд¦Àí²¢ÏÔʾ¡£µ«¿Í»§¶Ë¶ÔXMLµÄ´¦Àí²¢²»ÊÇÄÇôÈÝÒ×£¬Ò²²»ÊÇÄÇô¸ßЧ£¬Í¬Ê±Í¨¹ýÍøÂç´«ÊäÌ«¶à²»±ØÒªµÄÐÅÏ¢Ò²ÊÇÒ»ÖÖÀË·Ñ¡£ËùÒÔÕâÀïÎÒÃÇÀûÓÃasbxÖÐÄÚ½¨µÄTransformer¶ÔÕâ¶ÎXML´¦Àíһϣ¬ÌáÈ¡³öÎÒÃǸÐÐËȤµÄÄÚÈݲ¢ÒÔJSONµÄÐÎʽ·¢¸ø¿Í»§¶Ë¡£ÔÚ<method>¶ÎÖмÓÈëÏÂÃæÒ»¶Î£º
<transforms>
<transform type="Microsoft.Web.Services.XPathBridgeTransformer">
<data>
<attribute name="selector" value="channel" />
<dictionary name="namespaceMapping">
<item name="yweather" value="http://xml.weather.yahoo.com/ns/rss/1.0" />
</dictionary>
<dictionary name="selectedNodes">
<item name="Title" value="title" />
<item name="Description" value="item/description" />
<item name="CurrentCondition" value="item/yweather:condition/@text" />
</dictionary>
</data>
</transform>
</transforms>
ÆäÖÐ<transforms>ÉùÃ÷±íʾÕâ¸öMashup·½·¨µÄ·µ»ØÖµ½«»á±»Ò»Ð©transformer¸Ä±äһϣ¬ÀïÃæÉùÃ÷ÁËÒ»¸öÀàÐÍΪMicrosoft.Web.Services.XPathBridgeTransformerµÄtransformer£¬±íʾ½«ÓÃXPath±í´ïʽÀ´×ª»»¡£ÔÚÕâ¸öXPathBridgeTransformerÖÐÒªÉùÃ÷Èçϲ¿·Ö£º
nameΪselectorµÄÒ»¸öattribute¶Î£¬ÆäÖÐÖ¸¶¨µÄvalueÊôÐÔΪһ¸öXPath±í´ïʽ£¬½«Ñ¡È¡Õû¸öXPathBridgeTransformer½«Óõ½µÄÊý¾Ý¶Î¡£
nameΪnamespaceMappingµÄÒ»¸ödictionary¶Î£¬ÆäÖÐÖ¸¶¨ÁËÕâ¸öXMLÎļþÖеÄnamespaceÓ³Éä¡£Èç¹ûÔÚÏÂÃæµÄÑ¡Ôñ½Úµã¹ý³ÌÖÐÎÒÃÇÓõ½ÁËij¸önamespace£¬ÄÇôÕâÀï¾Í±ØÐëÓÐËüµÄÉùÃ÷¡£ÕâÀïÎÒÃÇÔÚÆäÖÐÌí¼ÓÒ»¸ö¶ÔyweatherµÄÓ³É䣬ÒòΪÏÂÃæÒªÓõ½¡£
nameΪselectedNodesµÄÒ»¸ödictionary¶Î£¬ÆäÖÐÿһ¸öitemµÄvalueÊôÐÔÊÇÒ»¸öXPath String£¬ÓÃÀ´´ÓXMLÖÐÑ¡Ôñ³öÏàÓ¦µÄÖµ£¬nameÊôÐÔÓÃÀ´Ö¸¶¨ÏàÓ¦µÄÔÚJavaScriptÖеÄÊôÐÔÃû³Æ¡£ÕâÀï×÷ΪʾÀý£¬ÎÒֻȡµÃÆäÖÐÈý¶ÎÄÚÈÝ£¬Äú¿ÉÒÔ¿´µ½£¬ÆäÖÐCurrentConditionµÄXPathÖÐÓõ½ÁËÉÏÃæÖ¸¶¨µÄnamespaceMapping¡£
¹ØÓÚXPathµÄ֪ʶ£¬ÎҾͲ»¶à½²ÁË£¬¸ÐÐËȤ»òÊDz»Ì«ÊìϤµÄÅóÓÑ¿ÉÒÔ×ÔÐÐGoogle£¬ÍøÉÏ×ÊÔ´ºÜ¶à¡£¹ØÓÚÆäËûÀàÐ͵ÄTransformer£¬ÎÒÒ²²»ÊǺÜÊìϤ£¬½ñºóÈç¹ûÓöµ½ÁËÎÒÔÙ½²½²¡£Íê³ÉºóµÄYahooWeatherBridge.asbxÎļþÈçÏ£º
<?xml version="1.0" encoding="utf-8" ?>
<bridge namespace="Dflying" className="YahooWeatherService">
<proxy type="Microsoft.Web.Services.BridgeRestProxy"
serviceUrl="http://xml.weather.yahoo.com/forecastrss" />
<method name="GetWeather">
<input>
<parameter name="p" />
<parameter name="u" value="c" />
</input>
<transforms>
<transform type="Microsoft.Web.Services.XPathBridgeTransformer">
<data>
<attribute name="selector" value="channel" />
<dictionary name="namespaceMapping">
<item name="yweather" value="http://xml.weather.yahoo.com/ns/rss/1.0" />
</dictionary>
<dictionary name="selectedNodes">
<item name="Title" value="title" />
<item name="Description" value="item/description" />
<item name="CurrentCondition" value="item/yweather:condition/@text" />
</dictionary>
</data>
</transform>
</transforms>
</method>
</bridge>
ÏÖÔÚ´´½¨Ò»¸öASP.NET Page²âÊÔһϣ¬Ê×ÏÈÒÀÈ»ÊÇÖØ¸´ÁËһǧ±éµÄScriptManager£¬»¹ÓжÔBridgeµÄÒýÓ㺠<atlas:ScriptManager ID="sm" runat="server">
<Services>
<atlas:ServiceReference Path="YahooWeatherBridge.asbx" />
</Services>
</atlas:ScriptManager>
È»ºóÒ»¸öHTML SelectÔªËØ£¬ÀïÃæÁÐÈëÁ˼¸¸ö³ÇÊÐÒÔ¼°ÏàÓ¦µÄ³ÇÊдúÂ룺
<!-- place selector -->
<select id="place">
<option selected="selected" value="CHXX0116">Shanghai, CH</option>
<option value="USCA0746">Mountain View, CA</option>
<option value="CHXX0008">Beijing, CH</option>
</select>
Ò»¸öHTML Button£¬ÓÃÀ´´¥·¢¶ÔServiceµÄµ÷Óãº
<!-- invoke the service -->
<input id="getWeather" type="button" value="Get Weather" onclick="return getWeather_onclick()" />
Ò»¶ÎHTMLÓÃÀ´ÏÔʾ½á¹û£º
<!-- display result -->
<div id="result" style="display: none;">
<div style="background-color: Gray; font-weight: bold;">Title</div>
<div id="title"></div>
<div style="background-color: Gray; font-weight: bold;">Description</div>
<div id="description"></div>
</div>
È»ºóÊÇJavaScript£¬¿ÉÒÔ¿´µ½Í¨¹ýDflying.YahooWeatherService.GetWeather()µ÷ÓÃÁËMashup£¬²¢ÔÚ·½·¨·µ»Øºó°Ñ¾¹ýtransformµÄÖµÊä³öµ½ÁËÒ³ÃæÉÏ£º function getWeather_onclick() {
// new atlas 'Select' control
var place = new Sys.UI.Select($('place'));
ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!




