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";

    }

posted @ 2012-08-15 10:20  attilaxAti  阅读(42)  评论(0编辑  收藏  举报