javascript加载xml 并解析各节点的值_javascript技巧_脚本之家

1.xml的解析: 具体代码如下,解析的结果root为Dom树。 复制代码 代码如下: if { var doc=new
ActiveXObject; doc.async=”false”; doc.loadXML; }else{ var parser=new
DOMParser(); var doc=parser.parseFromString; } var root =
doc.documentElement; 2.xml的封装:
(该代码为将页面中table封装为一个xml) 复制代码 代码如下: var xmlDoc = new
ActiveXObject; xmlDoc.loadXML; var root = xmlDoc.documentElement;
for(var index=0;index3.xml的封装: 具体方法如下, 复制代码 代码如下: XmlDocument doc = new
XmlDocument(); doc.LoadXml; XmlElement root = doc.DocumentElement;
root.SetAttribute;//此处name为该xml赋一个Name属性 foreach (ListObject
Object in
ListResult)//其中listResult为一个由listObject对象组成的list表,其中object为listResult的一个元素,他是ListObject型的
{ XmlElement item = doc.CreateElement;
item.SetAttribute;//其中key,value分别为Object的属性元素
item.SetAttribute(“Value”, Object.Value); root.AppendChild; }
最后生成的root即为xml. 4.xml的解析 复制代码 代码如下: XmlDocument doc = new
XmlDocument(); try { doc.Load;//此处加载request请求的xml流 } catch {}
XmlNodeList rowList; rowList = doc.DocumentElement.SelectNodes; List
voList = new List;//初始化一个List,改list中组成元素是ObjectVO对象
foreach (XmlNode row in rowList) { ObjectVO VO = new ObjectVO();
VO.VOElement1 =
Convert.ToInt32((row.SelectSingleNode(“Cell[@Name=’VOElement1′]”) as
XmlElement).GetAttribute;//vo中元素VOElement1为int型 VO.VOElement2 =
(row.SelectSingleNode(“Cell[@Name=’VOElement2′]”) as
XmlElement).GetAttribute;//或取xml中cell元素中name为VOElement2的value属性的值
VO.VOElement3 = (row.SelectSingleNode(“Cell[@Name=’VOElement3′]”) as
XmlElement).GetAttribute; voList.Add; } return voList;

但是是XML字符串,则在两种浏览器下就会有所不同,IE下可以直接使用LoadXML方法解析XML字符串,而在FF下则要使用DOMParser对象的parseFromString()方法即
varoParser=newDOMParser(); xmlDoc=oParser.parseFromString;
为了在两种浏览器中能通用,我想到了javascritp的发生异常的处理方式,就是try…catch…
复制代码 代码如下:functiontoXML{ try{
xmlDoc=newActiveXObject; xmlDoc.loadXML{ varoParser=newDOMParser();
xmlDoc=oParser.parseFromString; } returnxmlDoc; }

实例如下:

在实际开发中,有些通过get方式与后台交换数据的时候,需要用到的数据在url中,因此就需要我们来获取到url中有用的信息,下面封装的函数已经可以将url解析的很彻底了,可以拿来直接用的:

对于Bootstrap的弹层,插件有很多,今天主要用的是它自带的功能,通过bootstrap提供的模式窗口来实现的,而小编主要对使用方法进行了封装,开发人员可以自己动态传入弹层的HTML内容,可以控制按钮的显示与隐藏,用户通过MVC扩展方法对弹层进行生成,然后使用A标签进行调用.

[Ctrl+A 全选
注:如需引入外部Js需刷新才能执行]看,不管在ie还是ff中都弹出了1400吧!!
复制代码 代码如下:functionFormatToXml{
varisIE=function(){ varIE=/msie/i.test; returnIE; } varExc=function(){
varXmlDoc=null; if { XmlDoc=newActiveXObject; XmlDoc.loadXML; }else{
//FireFox2.0、Safari2.0 XmlDoc=.parseFromString; } returnXmlDoc; }
returnExc(); }
功能是一样的,都是为了在ie和ff中处理xml字符串的解析问题。不过在无忧上有些人说xml字符串要有

 var xmlDoc = null; function LoadXml { try { if  { xmlDoc = new ActiveXObject; } } catch  { try { xmlDoc = document.implementation.createDocument; } catch ; } } try{ xmlDoc.async=false; xmlDoc.load; return  { alert; } } //根据节点名称获取属性的值 function GetNodes { var xmldata = LoadXml; //获取xml第一个节点的值 //var booksName = xmldata.getElementsByTagName[0].childNodes[0].nodeValue;// //获取所有xml下面所有节点的值// var docElement=xmldata.getElementsByTagName;// for(var j=0;jFF下获取 xml属性 节点的值var cNodes=xmlDoc.getElementsByTagName;for (var j = 0; j < cNodes.length; i++) {var bookID = xmlDoc.getElementsByTagName[j].getAttribute;//获取book节点下面的bookTitle节点的值var bookTitile = xmlDoc.getElementsByTagName[j].childNodes[0].nodeValue;
function parseURL { var a = document.createElement; a.href = url; return { source: url, protocol: a.protocol.replace, host: a.hostname, port: a.port, query: a.search, params: { var ret = {}, seg = a.search.replace.split, len = seg.length, i = 0, s; //len = 2 alert for  { if  { continue; } s = seg[i].split; ret[s[0]] = s[1]; } return ret; })(), file: (a.pathname.match || [,''])[1], hash: a.hash.replace, path: a.pathname.replace, relative: (a.href.match(/tps?:\/\/[^\/]+[1], segments: a.pathname.replace }; }
@Html.GenerateDialog("测试",true, @)测试弹层

,可我测试后若有xmlversion=”1.0″encoding=”gb2312″?>,解析结果不一致,所以我上面的例子没有加这些字符。

以上就是小编为大家带来的javascript加载xml
并解析各节点的值全部内容了,希望大家多多支持脚本之家~

该函数的用法如下:

上面代码分为两块,第一块MVC扩展方法,主要用于在页面上输出弹层的代码段,第二段是A标签的调用,主要用于绑定上面的弹层控件.

var myURL = parseURL; //通过parseURL函数来解析当前页面的url;window.location.href可替换成任意要解析的url,如果直接写其他的url,格式应该字符串;var search_obj = myURL.params; //该解析方式是将search的内容解析为对象,方便进行数据的调用;其他方法可以自行尝试;var url_post = myURL.post; //当前页面的端口号;

下面主要看一下弹层的扩展方法,它使用了Func这个委托,用来接收前台的HTML代码段,这对于开发人员是个福音,你不用关心如何去拼接HTML代码了,而是直接把前台给我们的代码复制过来即可.

以上就是小编为大家带来的浅谈js的url解析函数封装全部内容了,希望大家多多支持脚本之家~

弹层方法

#region Bootstrap弹层/// /// bootstrap风格的弹层/// /// /// /// /// public static MvcHtmlString GenerateDialog(this HtmlHelper htmlHelper, bool isBtn, Func result){return GenerateDialog(htmlHelper, "详细", isBtn, result);}/// /// bootstrap风格的弹层/// /// /// /// /// /// public static MvcHtmlString GenerateDialog(this HtmlHelper htmlHelper, string title, bool isBtn, Func result){string templete = @"×"+title+@"" + result.Invoke + "";if {templete +=@"关闭提交";}templete +=@"$.click{$('#dialogContent form').submit;";return MvcHtmlString.Create;}#endregion

而运行的效果是我们可以想到的

以上所述是小编给大家介绍的Bootstrap被封装的弹层,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章