paip.从HTML select 获取数据
paip.从HTML select 获取数据
近日。。有个提现模块,用户需要从SELECT控件选择银行。。可是取到的ID值。后台保存的时候需要保存银行名。。
SELECT 的HTML如下..
<SELECT id=Land_Bank
name=Land_Bank require="true" msg="请选择银行" operator="GreaterThan" to="0" rig="请选择银行"
dataType="Compare"> <OPTION selected value=0>请选择银行</OPTION> <OPTION
value=4>中国工商银行</OPTION> <OPTION value=5>中国农业银行</OPTION> <OPTION
value=12>中国建设银行</OPTION> <OPTION value=6>交通银行</OPTION> <OPTION
value=9>中国银行</OPTION> <OPTION value=30>中国邮政储蓄银行</OPTION> <OPTION
value=16>招商银行</OPTION> <OPTION value=33>浦发银行</OPTION> <OPTION
value=19>中信银行</OPTION> <OPTION value=17>中国民生银行</OPTION> <OPTION
value=15>兴业银行</OPTION> <OPTION value=13>中国光大银行</OPTION> <OPTION
value=8>北京银行</OPTION> <OPTION value=21>广州银行</OPTION> <OPTION
value=31>深圳发展银行</OPTION> <OPTION value=20>广东发展银行</OPTION> <OPTION
value=22>杭州银行</OPTION> <OPTION value=27>宁波银行</OPTION> <OPTION
value=25>华夏银行</OPTION> <OPTION value=29>平安银行</OPTION> <OPTION
value=18>浙商银行</OPTION> <OPTION value=11>渤海银行</OPTION></SELECT>
如何获取select html中ID对应的值成为一个问题...
我先是准备用XML获取,但HTML不是很严格,不符合XML的条件。。最终,我的思路是先把HTML转为XML再用XML获取...使用了.NET版的
HTML解析库using Winista.Text.HtmlParser;
------------详细设计(伪码)--------------
1.保存HTML到/banks.txt
2. html=read(curdir+"/banks.txt")
xml=convert(html)
nodelist=getlistByTagname(xml,"option")
foreach nodelist
{
if(node.value=bankid)
return node.txt
}
-----------------实际代码----------------
private string getbankname(string bankId)
{
string rootdir = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;
string xmldir = rootdir + "/pay/banks.txt";
string html = m.filex.read(xmldir, "gbk");
string xmlstr = m.xml.XMLHelper.CovertHtmlToXml(html, "OPTION");
// XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument();
//xmlDoc.LoadXml(xmlstr);
string bname = getbankname(xmlstr, bankId);
return bname;
//return "nothisbank";
}
private string getbankname(string xmlstr, string bank)
{
XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument();
xmlDoc.LoadXml(xmlstr);
XmlNodeList list = xmlDoc.GetElementsByTagName("OPTION");
foreach (XmlNode node in list)
{
string val = node.Attributes["VALUE"].Value;
string text = node.InnerText;
if (bank.Equals(val))
return text;
}
return "nothisbank";
}