using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Xml;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections;
///
/// DrugQuery 的摘要描述
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。
// [System.Web.Script.Services.ScriptService]
public class DrugQuery : System.Web.Services.WebService {
DrugDataSystemRef.wsDrugDataSystem systemWS = new DrugDataSystemRef.wsDrugDataSystem();
public DrugQuery()
{
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
/**
* 取得 症狀名稱查詢資料
**/
[WebMethod]
public String GetDrugDataListByIndication(String indication)
{
// 讀取從 它方 webservice
indication = systemWS.GetDrugDataListByIndication(indication.Replace(" ",""));
// ============================================
// load and handle xml format
// ============================================
XmlDocument doc = new XmlDocument();
doc.LoadXml(indication);
XmlDocument afterParseDoc = stripDocumentNamespace(doc);
// 取xml內code與msg
XmlNode code = afterParseDoc.SelectSingleNode("/string/error/code");
XmlNode msg = afterParseDoc.SelectSingleNode("/string/error/msg");
// 取row 的node list
XmlNodeList rowList = afterParseDoc.SelectNodes("/string/data/row");
// 使用Dictionary記錄code與name值
Dictionary drugDataDic = new Dictionary();
foreach (XmlNode xn in rowList)
{
if( xn["code"].InnerText != null || xn["code"].InnerText != "" )
{
drugDataDic.Add(xn["code"].InnerText.Trim(), xn["name"].InnerText.Trim());
}
}
// ===========================================
// handle xml to json format
// ===========================================
// 建立物件
JObject jObj = new JObject();
// 建立屬性 值
jObj.Add(new JProperty("result", code.InnerText.Trim()));
jObj.Add(new JProperty("message", msg.InnerText.Trim()));
JArray jAry = new JArray();
// 建立resultData Array
jObj.Add(new JProperty("resultData", jAry));
foreach( KeyValuePair kvp in drugDataDic )
{
// 建立resultData內部物件A
JObject resObj = new JObject();
// 新增屬性值
resObj.Add("code", kvp.Key.Trim());
resObj.Add("name", kvp.Value.Trim());
// 將物件A加入Array
jAry.Add(resObj);
}
// 輸出json格式
String output = JsonConvert.SerializeObject(jObj);
return output;
}
/**
* 取得 症狀藥品名稱查詢資料
**/
[WebMethod]
public string GetDrugDataListByName(String name)
{
// 取得查詢結果
name = systemWS.GetDrugDataListByName(name.Replace(" ", ""));
// ============================================
// load and handle xml format
// ============================================
// parse xml查詢結果
XmlDocument doc = new XmlDocument();
doc.LoadXml(name);
XmlDocument afterParseDoc = stripDocumentNamespace(doc);
XmlNode code = afterParseDoc.SelectSingleNode("/string/error/code");
XmlNode msg = afterParseDoc.SelectSingleNode("/string/error/msg");
XmlNodeList rowList = afterParseDoc.SelectNodes("/string/data/row");
// 使用Dictionary記錄code與name值
Dictionary drugDataDic = new Dictionary();
foreach (XmlNode xn in rowList)
{
if (xn["code"].InnerText.Trim() != null || xn["code"].InnerText.Trim() != "")
{
drugDataDic.Add(xn["code"].InnerText.Trim(), xn["name"].InnerText.Trim());
}
}
// ===========================================
// handle xml to json format
// ===========================================
// 建立物件
JObject jObj = new JObject();
// 建立屬性 值
jObj.Add(new JProperty("result", code.InnerText.Trim()));
jObj.Add(new JProperty("message", msg.InnerText.Trim()));
JArray jAry = new JArray();
// 建立resultData Array
jObj.Add(new JProperty("resultData", jAry));
foreach (KeyValuePair kvp in drugDataDic)
{
// 建立resultData內部物件A
JObject resObj = new JObject();
// 新增屬性值
resObj.Add("code", kvp.Key.Trim());
resObj.Add("name", kvp.Value.Trim());
// 將物件A加入Array
jAry.Add(resObj);
}
// 輸出json格式
String output = JsonConvert.SerializeObject(jObj);
return output;
}
/**
* 取得 uk查詢資料
**/
[WebMethod]
public string GetDrugData(String uk)
{
uk = systemWS.GetDrugData(uk.Trim());
// ============================================
// load and handle xml format
// ============================================
XmlDocument doc = new XmlDocument();
doc.LoadXml(uk);
XmlDocument afterParseDoc = stripDocumentNamespace(doc);
XmlNode errCode = afterParseDoc.SelectSingleNode("/string/error/code");
XmlNode errMsg = afterParseDoc.SelectSingleNode("/string/error/msg");
XmlNodeList rowList = afterParseDoc.SelectNodes("/string/data/row");
List ukDataList = new List();
for( int i = 0 ; i < rowList.Count ; i++ )
{
if (rowList[i].SelectSingleNode("code").InnerText.Trim() != null || rowList[i].SelectSingleNode("code").InnerText.Trim() != "")
{
SetUkData setUkData = new SetUkData();
setUkData.CodeValHandler = rowList[i].SelectSingleNode("code").InnerText.Trim();
setUkData.NameValHandler = rowList[i].SelectSingleNode("name").InnerText.Trim();
setUkData.ViewValHandler = rowList[i].SelectSingleNode("view").InnerText.Trim();
setUkData.PictureValHandler = rowList[i].SelectSingleNode("picture1").InnerText.Trim();
setUkData.FactorValHandler = rowList[i].SelectSingleNode("factor").InnerText.Trim();
setUkData.AdaptValHandler = rowList[i].SelectSingleNode("adapt").InnerText.Trim();
setUkData.AtendValHandler = rowList[i].SelectSingleNode("attend").InnerText.Trim();
setUkData.SideEffectValHandler = rowList[i].SelectSingleNode("side_effect").InnerText.Trim();
ukDataList.Add(setUkData);
}
}
// ===========================================
// handle xml to json format
// ===========================================
// 建立物件
JObject jObj = new JObject();
// 建立屬性 值
jObj.Add(new JProperty("result", errCode.InnerText.Trim()));
jObj.Add(new JProperty("message", errMsg.InnerText.Trim()));
JArray jAry = new JArray();
// 建立resultData Array
jObj.Add(new JProperty("resultData", jAry));
for( int i = 0 ; i < ukDataList.Count ; i++ )
{
// 建立resultData內部物件A
JObject resObj = new JObject();
// 新增屬性值
resObj.Add("code", ukDataList[i].CodeValHandler.Trim());
resObj.Add("name", ukDataList[i].NameValHandler.Trim());
resObj.Add("view", ukDataList[i].ViewValHandler.Trim());
resObj.Add("picture1", ukDataList[i].PictureValHandler.Trim());
resObj.Add("factor", ukDataList[i].FactorValHandler.Trim());
resObj.Add("adapt", ukDataList[i].AdaptValHandler.Trim());
resObj.Add("attend", ukDataList[i].AtendValHandler.Trim());
resObj.Add("side_effect", ukDataList[i].SideEffectValHandler.Trim());
// 將物件A加入Array
jAry.Add(resObj);
}
String output = JsonConvert.SerializeObject(jObj);
return output;
}
// remove namespace string
XmlDocument stripDocumentNamespace(XmlDocument oldDom)
{
// Remove all xmlns:* instances from the passed XmlDocument
// to simplify our xpath expressions.
XmlDocument newDom = new XmlDocument();
newDom.LoadXml(System.Text.RegularExpressions.Regex.Replace(
oldDom.OuterXml, @"(xmlns:?[^=]*=[""][^""]*[""])", "",
System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Multiline)
);
return newDom;
}
// 讀寫 UK的內容值
class SetUkData
{
private String codeVal;
private String nameVal;
private String viewVal;
private String pictureVal;
private String factorVal;
private String adaptVal;
private String atendVal;
private String sideEffectVal;
public String CodeValHandler
{
get
{
return codeVal;
}
set
{
this.codeVal = value;
}
}
public String NameValHandler
{
get
{
return nameVal;
}
set
{
this.nameVal = value;
}
}
public String ViewValHandler
{
get
{
return viewVal;
}
set
{
this.viewVal = value;
}
}
public String PictureValHandler{
get{
return pictureVal;
}
set{
this.pictureVal = value;
}
}
public String FactorValHandler
{
get
{
return factorVal;
}
set
{
this.factorVal = value;
}
}
public String AdaptValHandler
{
get
{
return adaptVal;
}
set
{
this.adaptVal = value;
}
}
public String AtendValHandler
{
get
{
return atendVal;
}
set
{
this.atendVal = value;
}
}
public String SideEffectValHandler
{
get
{
return sideEffectVal;
}
set
{
this.sideEffectVal = value;
}
}
}
}
2013年5月27日 星期一
webservice - xml to json(C#)
此文章您無權限
2013年5月20日 星期一
ADO.NET連接DB抓取資料(C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
using System.Data.SqlClient;
public partial class ADONET : System.Web.UI.Page
{
String sqlCmmand = "select id,test_time,summary,author from test";
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = WebConfigurationManager.ConnectionStrings["testConnectionString2"].ConnectionString;
//SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["testConnectionString2"].ConnectionString);
SqlDataReader dr = null;
SqlCommand cmd;
cmd = new SqlCommand(sqlCmmand, conn);
try
{
conn.Open();
dr = cmd.ExecuteReader();
while ((dr.Read()))
{
String test = "";
test += dr.GetSqlString(2).ToString() + "
";
Response.Write(test);
}
Response.Write("==============");
//GridView1.DataSource = dr;
//GridView1.DataBind();
//String test = "";
//while ((dr.Read()))
//{
//test = dr[0].ToString();
//}
//Response.Write(test);
//Response.Write(dr[0].ToString());
//int id = dr.GetOrdinal("id");
//Response.Write(dr[2].ToString());
//Response.Write(dr.GetSqlString[2] + "");
}
catch (Exception ex)
{
Response.Write("Error Message -->" + ex.ToString() + "
");
throw;
}
finally
{
if (dr != null)
{
cmd.Cancel();
dr.Close();
}
if (conn.State == System.Data.ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
}
}
}
2013年5月9日 星期四
XCODE下使用SVN
在MAC Lion 10.7.5 XCode 4.6使用SVN 之前一直出問題
在改好code之後,file -> commit 卻會跳出
The operation could not be performed because no valid working copies were
found.
please verify that your files are under source control and try again.
好像一直無法連接到svn那端,
後來研究了發現這樣做可以解決:
1. 先用terminal 下指令 svn list server端svn的位置
2. 進入xcode-> window -> organizer-> Repositories
★若裡面已有加入的這個位置,請先刪掉重新點左下角 + -> Add Repository
3. 先checkout 下載你的檔案 若server端無檔案 就import你要的專案即可上傳。
4. 打開checkout的專案 修改 code 存檔。
5. File -> Source Control -> commit 即可連結上這個svn server位置 上傳定版的檔。
---
提供網路找到的別的方式 但我沒試過,因為我找不到svnserve.conf在哪 == =="
使用命令行修改代碼目錄下conf子目錄下的svnserve.conf配置文件
把anon-access=read改成anon-access=none.
如下:
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = write
2013年5月7日 星期二
Titanium 安裝 SVN 錯誤
今天在Titanium要安裝SVN的時候發現無法安裝,
從help -> install new software裡面找到svn後
安裝就跳出
titanium svn An error occurred while collecting items to be installed..
一長串
沒有記錄到,因為不小時裝起來了
怎麼安裝起來的其實我也不清楚,
我原本在 install new software的地方直接選 All Available Site,
在搜尋直接查SVN卻無法安裝,一直會跳出此error,
後來我把titanium更新之後,
在install new software->add -> name 隨意
location-> 輸入
http://download.eclipse.org/releases/helios
再到搜尋輸入SVN安裝,即可正常安裝~!
詳細安裝請參考:
https://wiki.appcelerator.org/display/tis/Subversion
從help -> install new software裡面找到svn後
安裝就跳出
titanium svn An error occurred while collecting items to be installed..
一長串
沒有記錄到,因為不小時裝起來了
怎麼安裝起來的其實我也不清楚,
我原本在 install new software的地方直接選 All Available Site,
在搜尋直接查SVN卻無法安裝,一直會跳出此error,
後來我把titanium更新之後,
在install new software->add -> name 隨意
location-> 輸入
http://download.eclipse.org/releases/helios
再到搜尋輸入SVN安裝,即可正常安裝~!
詳細安裝請參考:
https://wiki.appcelerator.org/display/tis/Subversion
2013年5月6日 星期一
Android設備統計
在Android平台開發到底要合適哪個版本的平台是很重要的~
可以參考google 的統計
http://developer.android.com/about/dashboards/index.html
這是到2013.05.01的統計 android 2.3.3 已經有38.4%了
可以參考google 的統計
http://developer.android.com/about/dashboards/index.html
這是到2013.05.01的統計 android 2.3.3 已經有38.4%了
2013年5月5日 星期日
mac安裝eclipse的svn外掛(subclipse)
mac安裝eclipse的svn外掛(subclipse)
我的系統是mac os 10.7.5
在eclipse-->help-->install new software --> add
name就隨意打(ex:subclipse) ,網址打
http://subclipse.tigris.org/update_1.8.x
出現subclipse與svnKit 都打勾,一直下一步安裝結束重開ecilpse。
重開完畢到偏好設定->Team->SVN ->team
發現javaHL出問題,
然後網路說要自己更新javaHK
去 http://www.macports.org/install.php 下載對應的 pkg檔(看你是Lioin還是mountain還是雪豹)
下載完安裝,
然後去terminal執行 (先移到root根目錄)
sudo port install subversion-javahlbindings
若發現 出現
Error: Port subversion-javahlbindings not found 的錯誤,
請先執行
sudo port -v selfupdate
結果若又出現
--> Updating MacPorts base sources using rsync
rsync: failed to connect to rsync.macports.org: Connection refused (61)
rsync error: error in socket IO (code 10) at /SourceCache/rsync/rsync-42/rsync/clientserver.c(105) [receiver=2.6.9]
Command failed: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/tarballs/base.tar /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
Exit code: 10
Error: /opt/local/bin/port: port selfupdate failed: Error synchronizing MacPorts sources: command execution failed
的錯誤的話,
請先確認 你網路的port或防火牆是不是有檔,
或你先換個3G網路試試
執行 sudo port -v selfupdate 成功的話會出現以下
-macteki-MacBook-Pro:/ mac$ sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.1.3 installed,
MacPorts base version 2.1.3 downloaded.
---> Updating the ports tree
---> MacPorts base is already the latest version
The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated
然後再執行
sudo port install subversion-javahlbindings
就會開始安裝,要一陣子讓他跑一下~
以上~
2013年5月2日 星期四
在Titanium使用JSDoc產生API文件
這篇來說明一下如何使用jsDoc,
我是在mac系統底下執行,
window系統資訊很多應該很多資料很容易查到。
首先先下載 jsdoc-toolkit jsdoc_toolkit-2.4.0.zip的檔案。
將zip檔解開放到你知道的位置。
一開始我以為要安裝,一直找不到如何安裝,但後來發現解壓縮完就可以用啦。
把你的js檔內加入註釋,但註釋需依照規範來寫,寫比較常見的幾個,
其它就看輔助網站囉~
例如有個method叫做 add() ,用來相加兩個數的結果。
/**
* 將兩數相加,回傳總和
*
*@param {int} 傳入第一個整數
*@param {int} 傳入第二個整數
*
*@return {int} 回傳總和的數字
*/
var add = function( a, b)
{
var result = a + b;
return result;
}
接下來去終端機下指令:
先移到你的jsdoc那個資料夾(剛才下載解完壓縮的地方)
java -jar jsrun.jar app/run.js -a -t=templates/jsdoc /Users/mac/Desktop/james/project/titanium/xxxx/Resources/*.js
你也可以直接指定檔名 。
接下來在jsdoc的那個資料夾內你會看見一個out的資料夾,裡面就是你的API文件了~
其它的註釋規範可以參考這裡。
訂閱:
文章 (Atom)