js怎么从oracle导出的xml文件 写一个省市联动的两个下拉框

<ROW>
    <C0>1</C0>
    <PROVINCE_CODE>34  </PROVINCE_CODE>
    <PROVINCE_NAME>&#23433;&#24509;&#30465;                                            </PROVINCE_NAME>
    <CITY_CODE>3671</CITY_CODE>
    <CITY_NAME>&#38108;&#38517;&#21439;                                            </CITY_NAME>
</ROW>

<ROW>
    <C0>2</C0>
    <PROVINCE_CODE>34  </PROVINCE_CODE>
    <PROVINCE_NAME>&#23433;&#24509;&#30465;                                            </PROVINCE_NAME>
    <CITY_CODE>3681</CITY_CODE>
    <CITY_NAME>&#26704;&#22478;&#24066;                                            </CITY_NAME>
</ROW>

<ROW>
    <C0>3</C0>
    <PROVINCE_CODE>33  </PROVINCE_CODE>
    <PROVINCE_NAME>&#27993;&#27743;&#30465;                                            </PROVINCE_NAME>
    <CITY_CODE>3351</CITY_CODE>
    <CITY_NAME>&#22025;&#21892;&#21439;                                            </CITY_NAME>
</ROW>

<ROW>
    <C0>4</C0>
    <PROVINCE_CODE>34  </PROVINCE_CODE>
    <PROVINCE_NAME>&#27993;&#27743;&#30465;                                            </PROVINCE_NAME>
    <CITY_CODE>3352</CITY_CODE>
    <CITY_NAME>&#24179;&#28246;&#24066;                                            </CITY_NAME>
</ROW>
</ROWDATA>
这种格式的,而且省份有会相隔几个又出现的情况 

既然数据库有数据,直街利用ajax异步请求就行。

 /* 全国各个省市县填写调用的ajax    begin  */
        $("#province").change(
                function() {
                    //每次请求都将上一次的内容清空
                    $("#city option:not(:first)").remove();
                    $("#district option:not(:first)").remove();
                    var provinceId = $(this).val();
                    if (provinceId != "") {
                        $.post("order_getCityId.action", {
                            provinceId : provinceId
                        }, function(data) {
                            var list = eval("(" + data + ")");
                            for ( var i = 0; i < list.length; i++) {
                                var tr = $("<option value='"+list[i][0]+"'>"
                                        + list[i][2] + "</option>");
                                $("#city").append(tr);
                            }
                        }, "text");
                    }
                });

        $("#city").change(
                function() {
                    $("#district option:not(:first)").remove();
                    var cityId = $(this).val();
                    if (cityId != "") {
                        $.post("order_getDistrictId.action", {
                            cityId : cityId
                        }, function(data) {
                            var list = eval("(" + data + ")");
                            for ( var i = 0; i < list.length; i++) {
                                var tr = $("<option value='"+list[i][0]+"'>"
                                        + list[i][2] + "</option>");
                                $("#district").append(tr);
                            }
                        }, "text");
                    }
                });