js解析XML文件,并将城市显示在下拉列表,选中城市后出现城市介绍

   在群上看到有人问问题,就闲着没事做了一下。

需求 就在读取XML文件的信息,城市显示在下拉列表中,选中城市出现城市介绍,界面没有怎么改动,大家凑合着看吧,哈哈。


XML文件如下 city.xml

<?xml version="1.0" encoding="gb2312"?>
<CityList>
	<City Name="北京">
		<Description>京有着三千余年的建城史和八百五十余年的建都史...</Description>
	</City>
	<City Name="上海">
		<Description>上海,中国大陆第一大城市;四个中央直辖市之一</Description>
	</City>
	<City Name="广州">	
		<Description>广州,简称穗,别称羊城、穗城、穗垣、仙城、花城;解放前旧称省城。</Description>
	</City>
	<City Name="成都">	
		<Description>位于四川省中部,是中西部地区重要的中心城市。西南地区科技中心、商贸中心、金融中心和交通通信枢纽。</Description>
	</City>
	<City Name="沈阳">	
		<Description>沈阳,辽宁省省会,中国15个副省级城市之一,中国七大区域中心城市之一</Description>
	</City>
</CityList>


是在firfox浏览器下面调试的,有个注册事件函数不起作用,只好注销掉了。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>city</title>
<style type="text/css">
	#cityIntro {
		width:300px;
		height:100px;
		border:1px solid #3F9}
</style>
<script type='text/javascript' defer=true>
//加载xml文件
	function loadXMLDoc(dname) 
	{
		try //Internet Explorer
  		{
 			 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
 		 }
			catch(e)
  			{
  				try //Firefox, Mozilla, Opera, etc.
    				{
    				xmlDoc=document.implementation.createDocument("","",null);
   					 }
 					 catch(e) {alert(e.message)}
 					 }
					try 
  					{
					  xmlDoc.async=false;
					  xmlDoc.load(dname);
					  return(xmlDoc);
 					 }
					catch(e) {alert(e.message)}
					return(null);
					}

	//主函数
    function loadXMLFile(){
		xmlDoc = loadXMLDoc("city.xml");
		var city = xmlDoc.getElementsByTagName("City");
		var myselect = document.getElementById("myselect");
		for(var i = 0;i<city.length;i++){
			var opt = document.createElement("option");
			opt.text = city[i].getAttribute("Name");
			
			myselect.appendChild(opt);
		}
		//catchEvent(myselect,'change',checkSelected());
	}
	//监听函数不起作用,不知道为什么
	 function catchEvent(eventobj,event,eventHandler){  
       if(eventobj.addEventListener){  
            eventobj.addEventListener(event,eventHandler,false);  
            }else if(eventobj.attachEvent){  
                event = 'on'+event;  
                eventobj.attachEvent(event,eventHandler);  
                }  
        }
		
		//onchange事件触发函数,选择城市后会显示 城市的相关信息
		function checkSelected(){
				var opt = document.getElementsByTagName("option");
				var city = xmlDoc.getElementsByTagName("City");
				var description = xmlDoc.getElementsByTagName("Description");
				for(var i = 0;i<opt.length;i++){
					if(opt[i].selected == true){
							for(var j = 0;j<city.length;j++){
								if(opt[i].text == city[j].getAttribute("Name")){
									var cityIntro =  document.getElementById("cityIntro");
										if(document.getElementsByTagName("p").length>0){
											var reP = document.getElementsByTagName("p");
											for(var k = 0; k<reP.length;k++){
												cityIntro.removeChild(reP[0]);
												}
											}
										var text = document.createTextNode(description[j].childNodes[0].nodeValue);
										var p = document.createElement("p");
										
										p.appendChild(text);
										cityIntro.appendChild(p);
										break;
									}
								}
							}
				
						}
				
					}  

	
	
</script>
</head>
<body onLoad="loadXMLFile()">
hahah
	<div id="divcontent">
    	<select id="myselect" onChange="checkSelected()">
        <option> -- </option>
        </select>
    </div>
    <div id="cityIntro"></div>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将解析后的XML数据存入达梦数据库,可以按照以下步骤进行: 1. 使用XML解析器(如Java中的DOM或SAX解析器)读取XML文件,并将其解析成程序可用的数据格式,例如Java中的Document对象。 2. 遍历解析后的数据,提取需要存入数据库的数据,并将其转换为达梦数据库的数据格式,例如Java中的PreparedStatement对象。 3. 使用JDBC连接到达梦数据库,并将转换后的数据插入到数据库中,例如Java中的executeUpdate()方法。 下面是一个Java示例代码,演示了如何将解析后的XML数据存入达梦数据库: ```java import java.sql.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class XmlToDm { public static void main(String[] args) { try { // 解析XML文件 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("data.xml"); // 连接到达梦数据库 Class.forName("dm.jdbc.driver.DmDriver"); Connection conn = DriverManager.getConnection("jdbc:dm://localhost:5236", "user", "password"); // 提取需要存入数据库的数据 NodeList nodes = doc.getElementsByTagName("person"); for (int i = 0; i < nodes.getLength(); i++) { Element person = (Element) nodes.item(i); String name = person.getAttribute("name"); int age = Integer.parseInt(person.getAttribute("age")); // 将数据转换为达梦数据库的数据格式 PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (name, age) VALUES (?, ?)"); stmt.setString(1, name); stmt.setInt(2, age); // 插入数据到达梦数据库 int rows = stmt.executeUpdate(); System.out.println(rows + " row(s) inserted."); } // 关闭数据库连接 conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的示例代码中,我们首先使用Java内置的XML解析解析了名为"data.xml"的XML文件,并遍历了其中的"person"元素,提取了"name"和"age"属性的值,并将其转换为达梦数据库的数据格式。接着,我们使用JDBC连接到达梦数据库,并将转换后的数据插入到"person"表中。最后,我们关闭了数据库连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值