`
小嘴看世界
  • 浏览: 131817 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

读取xml到下拉列表

    博客分类:
  • Web
阅读更多
在开发节点物流的平台时有一个下拉列表读取xml的东西,虽然后来被用其他的东西换掉了,可是还要来说一说这个小东东。
首先是根据一个下拉列表的选择:A,货源,B、车源,C、其它

货源对应goods 车源对应truck 其它为others,下面是xml文件
<?xml version="1.0" encoding="gb2312"?>
<Info>
	<goods>
		<sdtys>
			<sdty>钢铁</sdty>
			<sdty>煤炭</sdty>
			<sdty>电力</sdty>
		</sdtys>
		<uoms>
			<uom>吨</uom>
			<uom>立方米</uom>
		</uoms>
	</goods>
	<truck>
		<sdtys>
			<sdty>卡车</sdty>
			<sdty>斯太尔</sdty>
			<sdty>tank</sdty>
		</sdtys>
		<uoms>
			<uom>100/公里</uom>
			<uom>22/小时</uom>
		</uoms>
	</truck>
	<others>
		<sdtys>
			<sdty>其他信息</sdty>
		</sdtys>
		<uoms>
			<uom>个</uom>
			<uom>台</uom>
			<uom>其他</uom>
		</uoms>
	</others>
</Info>


数据读取到的下拉列表分别为 类型 和 单位,分别对应上述中sdtys和uoms

然后是html文件,如下
1.信息选择的html代码
<select id="info.tpye" name="info.tpye" onChange = "GetInfo(this.selectedIndex);">
	<option></option>
	<option value="A">货源信息</option>
	<option value="B">车源信息</option>
	<option value="C">其它信息</option>
</select>

2.填入的html代码
<td>类型</td>
<td>
	<select name="info.sdty" id="info.sdty" style="width:120px;">
	</select>
</td>
<td>单位</td>
<td>
	<select name="info.uom" id="info.uom" style="width:120px;">
	</select>
</td>


下面是最重要的部分了吧,列出我的javascript代码,因为使用到了一个工具包prototype.js,所以$('s')可以使用document.getElementById('s')替代

1.getOptionsText(name)是一个方便我获得options内容的方法
function getOptionsText(name){
		if($("info.sdty").selectedIndex != -1){
			return $(name).options[$(name).selectedIndex].text
		}else{
			return "";
		}
	}

2.读取xml
function GetInfo(name)
{
	$('info.sdty').options.length=0;
	$('info.uom').options.length=0;

	var info;
	if(name == 1){
		info = "goods";
	}else if(name == 2){
		info = "truck"
	}else if(name == 3){
		info = "others";
	}else{
		return;
	}

	if(window.ActiveXObject){
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.load("data.xml");
	}else{
		var parser = new DOMParser();
		var xmlDoc = parser.parseFromString("data.xml","text/xml");
	}
	//var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	//xmlDoc.load("data.xml");
	//alert(xmlDoc.validateOnParse);

	xmlDoc = xmlDoc.getElementsByTagName(info)[0];
	var sdtys = xmlDoc.getElementsByTagName('sdty');
	var uoms = xmlDoc.getElementsByTagName('uom');
	for(var i=0;i<sdtys.length;i++){
		//alert(sdtys(i).firstChild.nodeValue);
		//$('info.sdty').options[i]=new Option(sdtys(i).firstChild.nodeValue,sdtys(i).firstChild.nodeValue);
		$('info.sdty').add(new Option(sdtys(i).firstChild.nodeValue,sdtys(i).firstChild.nodeValue));
	}
	for(var i=0;i<uoms.length;i++){
		$('info.uom').add(new Option(uoms(i).firstChild.nodeValue,uoms(i).firstChild.nodeValue));
	}

}

我并没有删除掉注释代码是因为曾经碰到了一个问题,开始我是用如下方法来做的
xmlDoc.load("data.xml");


然后被报告说xml不可读取的信息,后来我加入了一个alert
alert(xmlDoc.validateOnParse);

validateOnParse的作用是告诉解析器文件是否有效
说明:此属性是可擦写的。如果传回值为true,表示文件被解析时被确认是有效的。如果传回false,表示文件是无效的,并被认为只是标准格式的(well-formed)文件。
弹出的时true,然后xml也可以读取到下拉列表,手动设置它为true,xml却依然不能读取,凭着一点经验,把xml文件设置为非异步
xmlDoc.async = false;

结果OK了。不多解释,async还是很重要的一个属性,幸好使用Ajax做过一些东西。这个问题还算是没费太多功夫。
最后来个图片吧。
  • 大小: 47.5 KB
分享到:
评论
1 楼 小嘴看世界 2007-03-23  
平时很少用select,顺便把相关的知识总结一下
1.动态创建select

   function createSelect(){

       var mySelect = document.createElement("select");
       mySelect.id = "mySelect"; 
       document.body.appendChild(mySelect);
   }

2.添加选项option

  function addOption(){

       //根据id查找对象,
        var obj=document.getElementById('mySelect');

        //添加一个选项
        obj.add(new   Option("文本","值"));  
  }

3.删除所有选项option

  function removeAll(){
        var obj=document.getElementById('mySelect');
 
        obj.options.length=0; 

  }

4.删除一个选项option

function removeOne(){
        var obj=document.getElementById('mySelect');

        //index,要删除选项的序号,这里取当前选中选项的序号

        var index=obj.selectedIndex;
        obj.options.remove(index); 
  }

5.获得选项option的值

var obj=document.getElementById('mySelect');

var index=obj.selectedIndex; //序号,取当前选中选项的序号

var val = obj.options[index].value;

6.获得选项option的文本

var obj=document.getElementById('mySelect');

var index=obj.selectedIndex; //序号,取当前选中选项的序号

var val = obj.options[index].text;

7.修改选项option

var obj=document.getElementById('mySelect');

var index=obj.selectedIndex; //序号,取当前选中选项的序号

var val = obj.options[index]=new Option("新文本","新值");

8.删除select

   function removeSelect(){
         var mySelect = document.getElementById("mySelect");
        mySelect.parentNode.removeChild(mySelect);
  }

相关推荐

    Ajax实现下拉列表从数据库读取数据级联

    本文将深入探讨如何使用Ajax实现下拉列表(Dropdown List)从数据库读取数据并实现级联效果。级联下拉列表通常用于关联数据的筛选,例如省份-城市-区县的选择,当用户在一级下拉列表中选择一个选项时,二级下拉列表...

    省市区下拉列表.rar

    同时,考虑到性能,数据加载和下拉列表更新应当尽可能高效,避免一次性加载所有数据。 5. 错误处理:在实际应用中,需要考虑数据加载失败或用户选择非法值的情况,进行适当的错误处理和提示。 6. 跨浏览器兼容性:...

    安卓开发xml解析省市县三级联动Spinner下拉列表源码

    以下是对"安卓开发xml解析省市县三级联动Spinner下拉列表源码"的详细解释。 首先,我们要理解XML在Android中的角色。XML(eXtensible Markup Language)是一种标记语言,常用于存储数据结构,便于程序读取。在...

    Select-下拉列表多级联动

    当用户在某个下拉列表中选择一个选项时,`linkage.js`会读取XML数据,找出与该选项相关的子节点,然后将这些子节点作为下一个下拉列表的选项。 实现这个功能的具体步骤大致如下: 1. **初始化**:加载HTML页面后,...

    jquery 通用三级联动下拉列表.rar

    jquery 通用三级联动下拉列表 , 用Jquery实现的三级联动下拉列表插件,压缩包内有多个不同的版本,其实现的基本原理大同小异,无非是调用方式的不同,第一个是通过读取XML构建,支持IE/firefox,chrome不支持,XML...

    Winform C# 从省市区的xml文件中读取的三级联动下拉选项实现

    在本文中,我们将深入探讨如何使用C# Winform来实现一个从XML文件中读取的省市区三级联动下拉选项。这个功能对于许多需要展示地理位置信息的桌面应用程序来说非常实用。我们将详细介绍整个过程,包括XML文件的结构、...

    数据库读取下拉列表选项

    在这个场景中,我们关注的是如何从数据库中读取数据并将其呈现在网页上的下拉列表(Dropdown List)中。下拉列表通常用于提供用户多个可选的预设选项,是Web表单设计中常见的一种交互元素。下面将详细阐述这一过程...

    ajax实现级联下拉列表代码

    7. **更新界面**:解析接收到的JSON或XML数据,创建新的选项并添加到下一个下拉列表中。 8. **错误处理**:如果请求过程中发生错误,需要有适当的错误处理机制,如显示错误信息或恢复默认状态。 在提供的"ajax实现...

    省市联动下拉列表

    4. **Ajax**:在`Default.aspx.cs`中处理完请求后,通常会返回一个JSON或XML响应,前端JavaScript代码接收并解析这个响应,然后更新城市下拉列表。这一步骤确保了页面无需刷新就能完成省市联动。 5. **HTML和CSS**...

    下拉列表从数据库读取数据级联

    总的来说,通过结合HTML、JavaScript和服务器端脚本,我们可以实现下拉列表从数据库读取数据的级联效果。这个过程中,Ajax起到了关键作用,它允许我们在不刷新页面的情况下与服务器进行交互,提高了用户体验。记住,...

    Eclipse编写的Android下拉应用实例(数据源是xml文件)

    在这个例子中,开发者可能创建了一个自定义的ArrayAdapter或者CursorAdapter,从XML文件读取数据,并填充到ListView的各个Item中。 8. **数据解析**: 为了将XML文件中的数据提取出来,需要使用XML解析库,如Android...

    .Net 中 DropDownList 绑定XML 数据 中国省市县下拉菜单三级联动 成功版

    本示例中,我们探讨的是如何利用.NET框架结合XML数据来实现中国省市县的三级联动效果,即当用户在DropDownList中选择一个省时,市的下拉列表会自动更新,接着选择市后,县的下拉列表也会动态加载对应的数据。...

    c# winform读取xml文件创建菜单的代码.docx

    如果没有,就直接将文本内容作为菜单项添加到父菜单的下拉列表中。 在`CreateSubMenuByElement`方法中,我们看到类似的过程,但这里处理的是XML元素而不是XmlNode,这是因为我们之前已经将XML文件转换为XmlElement...

    XML无刷新三级联动下拉DropDownList示例(vs2005+sql2000)

    在这个示例中,XML文件存储了联动下拉列表所需的层次结构数据,如地区、城市和街道等信息。每个级别之间的关联关系通过特定的标签和属性来表示,便于JavaScript解析和处理。 2. **ASP.NET控件**:`DropDownList`是...

    下拉列表框文本邦定

    通过上述分析,我们可以看出,“下拉列表框文本绑定”的实现过程涉及到数据库查询、数据读取、数据绑定等多个步骤。开发者需要熟悉这些基本概念和技术细节,才能有效地利用`DropDownList`控件构建功能强大的用户界面...

    ASP网页选择下拉列表的值时立即更新到数据库

    当用户在下拉列表(Dropdown List)中选择一个选项时,通常我们希望这个选择能够立即反映到数据库中,而不需要用户点击提交按钮或者进行页面刷新。这种实时更新数据库的技术被称为“无刷新”或“AJAX”...

    微信下拉列表Spinner.zip

    在Android开发中,微信下拉列表(Spinner)是一种常见的组件,用于实现下拉选择功能,类似于iOS中的下拉菜单。Spinner通常被用在需要用户从一组预定义的选项中进行选择的情境,如设置界面、登录注册页面等。在本项目...

    redis + ajax实现异步下拉列表加载

    在我们的下拉列表示例中,当用户滚动到列表底部或者开始输入搜索时,Ajax可以向服务器发送异步请求,请求新的数据条目。这种技术提高了交互性,使得用户无需等待整个页面刷新就能看到结果。 实现这个功能的具体步骤...

Global site tag (gtag.js) - Google Analytics