问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

winform中怎么读取xml实现省市县三级联动

发布网友 发布时间:2022-04-07 23:57

我来回答

2个回答

懂视网 时间:2022-04-08 04:19

提供有china.xml和china.sql文件,实现全国省市区的三级联动效果

一、xml实现

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JComboBox;
import javax.swing.JLabel;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.swing.DefaultComboBoxModel;

@SuppressWarnings("serial")
public class ChinaJFrame extends JFrame {

    private JPanel contentPane;
    private List<String> cityList=null;
    private List<String> provinceList=null;
    private List<String> countyList=null;
    @SuppressWarnings("rawtypes")
    private JComboBox provinceComboBox, cityComboBox, countyComboBox;
    SAXReader reader = new SAXReader();
    Document document = null;
    List<String> list=null;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ChinaJFrame frame = new ChinaJFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    /**
     * Create the frame.
     *
     * @throws DocumentException
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public ChinaJFrame() throws DocumentException {
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        provinceComboBox = new JComboBox();
        provinceComboBox.setModel(new DefaultComboBoxModel(new String[] { "省份" }));
        provinceComboBox.setBounds(33, 106, 108, 21);
        
        cityComboBox = new JComboBox();
        cityComboBox.setBounds(171, 106, 108, 21);
        cityComboBox.setModel(new DefaultComboBoxModel(new String[] { "地级市" }));
        
        countyComboBox = new JComboBox();
        countyComboBox.setBounds(302, 106, 108, 21);
        countyComboBox.setModel(new DefaultComboBoxModel(new String[] { "市、县级市" }));
        
        
        provinceList = getProvince("province");
        for (String s : provinceList) {
            provinceComboBox.addItem(s);
        }
        
        provinceComboBox.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED){
                    int ProvinceIndex = provinceComboBox.getSelectedIndex();
                    cityList = getCity(ProvinceIndex);    
                    cityComboBox.removeAllItems();
                    for (String s : cityList) {
                        cityComboBox.addItem(s);
                    }
                }
            }
        });
        
        cityComboBox.addItemListener(new ItemListener() {
            
            @Override
            public void itemStateChanged(ItemEvent e) {
                
                if(e.getStateChange() == ItemEvent.SELECTED){
                    cityComboBox=(JComboBox) e.getSource();
                    String name2=(String) cityComboBox.getSelectedItem();
                    countyList=getCounty(name2);
                    
                    countyComboBox.removeAllItems();
                    for(String cl:countyList){
                        countyComboBox.addItem(cl);
                    }
                }
                
            }
        });
        
        JLabel lblNewLabel = new JLabel(
                "u5168u56FDu57CEu5E02u4E09u7EA7u8054u52A8");
        lblNewLabel.setFont(new Font("宋体", Font.BOLD, 18));
        lblNewLabel.setBounds(140, 25, 160, 48);

        contentPane.add(provinceComboBox);
        contentPane.add(cityComboBox);
        contentPane.add(countyComboBox);
        contentPane.add(lblNewLabel);
    }

    @SuppressWarnings("unchecked")
    public List<String> getProvince(String name) {
        list = new ArrayList<String>();
        try {
            document = reader.read(new File("src/china.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        Element root = document.getRootElement();
        for(Iterator<Element> i = root.elementIterator(name); i.hasNext();) {
            Element node = i.next();
            List<Attribute> attrs = node.attributes();
            if (attrs != null) {
                for (Attribute attr : attrs) {
                    list.add(attr.getValue());
                }
            }
        }
        return list;
    }

    @SuppressWarnings("unchecked")
    public List<String> getCity(int index) {
        list = new ArrayList<String>();
        try {
            document = reader.read(new File("src/china.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        Element root = document.getRootElement();
        List<Element> elements = root.elements();
        List<Element> elements1 = elements.get(index-1).elements();
        for (int i=0; i < elements1.size(); i++) {
            List<Attribute> attrs = elements1.get(i).attributes();
            if (attrs != null) {
                for (Attribute attr : attrs) {
                    list.add(attr.getValue());
                }
            }
        }
        return list;

    }

    @SuppressWarnings("unchecked")
    public List<String> getCounty(String name2){
        list = new ArrayList<String>();
        
        try {
            document = reader.read(new File("src/china.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        ////province[@name=‘北京市‘]
        List<Node> nodes = document.selectNodes("//city[@name=‘" + name2 + "‘]//county//@name");
        for (Node node : nodes) {
            list.add(node.getText());
        }
        return list;

    }
}

二、数据库实现

(1)数据库连接的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <!-- 指定名称的配置 -->
    <named-config name="oa">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/china</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="maxPoolSize">100</property>
        <property name="initialPoolSize">20</property>
        <property name="minPoolSize">10</property>
        <property name="acquireIncrement">5</property>
    </named-config>
    <!-- 缺省的配置 -->
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/china</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="maxPoolSize">100</property>
        <property name="initialPoolSize">20</property>
        <property name="minPoolSize">10</property>
        <property name="acquireIncrement">5</property>
    </default-config>
</c3p0-config>

(2)实体Bean

public class Province {//省
    private Integer id;
    private String name;

}

public class City {//市
    private Integer id;
    private String name;
    private Integer p_id;

}

public class County {//区
    private Integer id;
    private String name;
    private Integer c_id;

}

(3)数据库操作接口定义和实现

public interface ChinaDao<T> {
    List<T> getObjects();
    List<T> getCityObjectsById(Integer id);
    List<T> getCountyObjectsById(Integer id);
    City getIdByName(String name);
}

public class ChinaDaoImpl<T> implements ChinaDao<T>{
    private JdbcTemplate jdbcTemplate=new JdbcTemplate(DBConn.getDataSourse());
    private List<T> entities=null;

    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public List<T> getObjects() {
        String sql="select id, name from province";
        entities=jdbcTemplate.query(sql, new RowMapper(){

            @Override
            public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                Province province=new Province();
                province.setId(rs.getInt("id"));
                province.setName(rs.getString("name"));
                return province;
            }
            
        });
        return entities;
    }
    
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public List<T> getCityObjectsById(Integer id) {
        String sql="select id, name ,p_id from city where p_id=?";
        entities=jdbcTemplate.query(sql, new Object[]{id},new RowMapper(){
            @Override
            public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                City city=new City();
                city.setId(rs.getInt("id"));
                city.setName(rs.getString("name"));
                city.setP_id(rs.getInt("p_id"));
                return city;
            }
            
        });
        return entities;
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public List<T> getCountyObjectsById(Integer id) {
        String sql="select id, name ,c_id from county where c_id=?";
        entities=jdbcTemplate.query(sql, new Object[]{id},new RowMapper(){

            @Override
            public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                County county=new County();
                county.setId(rs.getInt("id"));
                county.setName(rs.getString("name"));
                county.setC_id(rs.getInt("c_id"));
                return county;
            }
            
        });
        return entities;
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public City getIdByName(String name) {
        String sql="select id, name ,p_id from city where name=?";
        City entity=jdbcTemplate.queryForObject(sql, new Object[]{name},new RowMapper(){
            @Override
            public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                City city=new City();
                city.setId(rs.getInt("id"));
                city.setName(rs.getString("name"));
                city.setP_id(rs.getInt("p_id"));
                return city;
            }    
        });
        return entity;
    }
}

(4)具体实现

public class ChinaJFrame extends JFrame {
    private ChinaDao chinaDao=new ChinaDaoImpl();
    private JPanel contentPane;
    private List<String> cityList=null;
    private List<String> provinceList=null;
    private List<String> countyList=null;
    @SuppressWarnings("rawtypes")
    private JComboBox provinceComboBox, cityComboBox, countyComboBox;
    SAXReader reader = new SAXReader();
    Document document = null;
    List<String> list=null;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ChinaJFrame frame = new ChinaJFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    /**
     * Create the frame.
     *
     * @throws DocumentException
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public ChinaJFrame() throws DocumentException {
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        provinceComboBox = new JComboBox();
        provinceComboBox.setModel(new DefaultComboBoxModel(new String[] { "省份" }));
        provinceComboBox.setBounds(33, 106, 108, 21);
        
        cityComboBox = new JComboBox();
        cityComboBox.setBounds(171, 106, 108, 21);
        cityComboBox.setModel(new DefaultComboBoxModel(new String[] { "地级市" }));
        
        countyComboBox = new JComboBox();
        countyComboBox.setBounds(302, 106, 108, 21);
        countyComboBox.setModel(new DefaultComboBoxModel(new String[] { "市、县级市" }));
        
        List<Province> provinces=chinaDao.getObjects();
        provinceList = new ArrayList<String>();
        for(Province p:provinces){
            provinceList.add(p.getName());
        }
        for (String s : provinceList) {
            provinceComboBox.addItem(s);
        }
        
        provinceComboBox.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED){
                    cityList=new ArrayList<String>();
                    int ProvinceIndex = provinceComboBox.getSelectedIndex();
                    
                    List<City> cities=chinaDao.getCityObjectsById(ProvinceIndex);
                    for(City city:cities){
                        cityList.add(city.getName());
                    }
                    
                    cityComboBox.removeAllItems();
                    for (String s : cityList) {
                        cityComboBox.addItem(s);
                    }
                }
            }
        });
        
        cityComboBox.addItemListener(new ItemListener() {
            
            @Override
            public void itemStateChanged(ItemEvent e) {        
                if(e.getStateChange() == ItemEvent.SELECTED){
                    cityComboBox=(JComboBox) e.getSource();
                    String name=(String) cityComboBox.getSelectedItem();
                    countyList=new ArrayList<String>();
                    int CityIndex = chinaDao.getIdByName(name).getId();
                    List<County> counties=chinaDao.getCountyObjectsById(CityIndex);
                    
                    for(County county:counties){
                        countyList.add(county.getName());
                    }
                    countyComboBox.removeAllItems();
                    for(String cl:countyList){
                        countyComboBox.addItem(cl);
                    }
                }
                
            }
        });
        
        JLabel lblNewLabel = new JLabel(
                "u5168u56FDu57CEu5E02u4E09u7EA7u8054u52A8");
        lblNewLabel.setFont(new Font("宋体", Font.BOLD, 18));
        lblNewLabel.setBounds(140, 25, 160, 48);

        contentPane.add(provinceComboBox);
        contentPane.add(cityComboBox);
        contentPane.add(countyComboBox);
        contentPane.add(lblNewLabel);
    }
}

三级联动查询全国省市区(xml与数据库)

标签:

热心网友 时间:2022-04-08 01:27

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;


namespace WebSiteAssistant

{

    public class CityDropdown

    {

        public List<City> GetCityInfo(XmlNodeList nodeList)

        {

            List<City> cityList = new List<City>();

            for (int i = 0; i < nodeList.Count; i++)

            {

                XmlNode node = nodeList.Item(i);

                City ct = new City();

                foreach (XmlAttribute att in node.Attributes)

                {

                    int findID = att.Name.IndexOf("ID");

                    if (findID > 1)

                    {

                        ct.CityID = att.Value;

                    }

                    else if (findID < 0)

                    {

                        ct.CityName = att.Value;

                    }

                }

                cityList.Add(ct);

            }

            return cityList;

        }


        public XmlNodeList GetNode(XmlDataDocument xmlCity, int Level, string cityID)

        {

            //省

            if (Level == 1)

                return xmlCity.ChildNodes[0].ChildNodes;

            //省下县

            if (Level == 2)

            {

                for (int i = 0; i < xmlCity.ChildNodes[0].ChildNodes.Count; i++)

                {

                    foreach (XmlAttribute att in xmlCity.ChildNodes[0].ChildNodes[i].Attributes)

                    {

                        int findID = att.Name.IndexOf("ID");

                        if (findID > 1 && att.Value == cityID)

                        {

                            return xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes;

                        }

                    }

                }

            }

            //县下区

            if (Level == 3)

            {

                for (int i = 0; i < xmlCity.ChildNodes[0].ChildNodes.Count; i++)

                {

                    for (int j = 0; j < xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes.Count; j++)

                    {

                        foreach (XmlAttribute att in xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes[j].Attributes)

                        {

                            int findID = att.Name.IndexOf("ID");

                            if (findID > 1 && att.Value == cityID)

                            {

                                return xmlCity.ChildNodes[0].ChildNodes[i].ChildNodes[j].ChildNodes;

                            }

                        }

                    }

                }

            }

            return null;

        }

    }


    public class TestCity

    {

        static void Main(string[] args)

        {

            try

            {

                XmlDataDocument xmlCity = new XmlDataDocument();

                xmlCity.Load(@"..\..\City.xml");

                CityDropdown dorpDown = new CityDropdown();

                //取省

                XmlNodeList levelNode1 = dorpDown.GetNode(xmlCity, 1, "");

                List<City> city1 = new List<City>();

                city1 = dorpDown.GetCityInfo(levelNode1);

                Console.WriteLine(city1.Count);

                //取省的下一级

                XmlNodeList levelNode2 = dorpDown.GetNode(xmlCity, 2, "110000");

                List<City> city2 = new List<City>();

                city2 = dorpDown.GetCityInfo(levelNode2);

                Console.WriteLine(city2.Count);

                //取县的详情

                XmlNodeList levelNode3 = dorpDown.GetNode(xmlCity, 3, "110100");

                List<City> city3 = new List<City>();

                city3 = dorpDown.GetCityInfo(levelNode3);

                Console.WriteLine(city3.Count);

            }

            catch (Exception ex)

            {

                ex.ToString();

                Console.WriteLine(ex.ToString());

            }

            Console.Read();

        }

    }


    public class City

    {

        private string _cityID;

        /// <summary>

        /// 编号

        /// </summary>

        public string CityID

        {

            get { return _cityID; }

            set { _cityID = value; }

        }

        private string _cityName;

        /// <summary>

        /// 名称

        /// </summary>

        public string CityName

        {

            get { return _cityName; }

            set { _cityName = value; }

        }

    }

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 什么是法人,法人是不是公司 企业都是企业法人吗? 中国成都饮用水直接喝的还要多少年可以实现? 成都自来水有问题不? 国内的自来水可以直接喝吗 干粉灭火器主要适用于什么扑救物质 干粉灭火器干粉是用什么做的 成都自来水是否安全 请问 现在成都的自来水水质怎么样 是否可以直接烧开饮用 成都的自来水烧成开水怎么好多白色物质喝了对身体有没有害,请知情者告知万分感谢; 成都自来水可以直接喝吗 请问 现在成都的自来水水质怎么样 是否可以直接烧开饮用? 买的外套毛衣帽子有点大怎么处理? 谁自己投过抖音广告?取取经。 华为TFY一AN00是什么型号和什么膜一样 越来越多人关闭朋友圈,对微信有影响吗 快闪店怎么开,快闪店一般开几天 帽子买大了怎么办?别急,还是能补救一下的 二氧化碳是什么样的气体? CO2的物理性质和化学性质是什么 “一水多用”的好办法 一水多用的方法要5种 一水多用资料 一水多用的方法是什么? 举例说明水资源的一水多用? 一水多用有哪些 “一水多用” 好办法 节约水电的内容 韩国粉丝送女明星河马公仔叫什么 暖风机IP款与姆明非IP款有啥区别啊? moominvalley是什么动画片 跪求!! 莫米的故事(小肥肥一族muumi Moomin Valley) 国语版,不是粤语的视频? moomin cattery 是沐米猫舍的意思吗? moomin characters tm/bulls是什么意思 姆明公仔是什么牌子的?哪个才是正品? 请问这图案叫什么 是一种糖果品牌上的图案。 安卓手机微信误删了一个好友,怎么恢复啊,忘了和手机号 求一在线看电影的网站,要中英双译的,谢谢啦 谁给我个正规的电影网站啊?要免费的,电影要多,且不是很卡的哦.谢谢啦.. 谁给个看电影的网站啊??谢谢了啊