开发者社区> 问答> 正文

javascript读取xml出错?报错

改别人N年前的脚本,javascript和xml都写在一个文件中,脚本如下:

function loadTemplate(sTagName,sEditName){
	document.all.TemplateContent.value = xmlTemplate.selectSingleNode("//Template" + sTagName).text;
	document.all.TemplateTag.value = sTagName;
	document.all.editTag.innerText = sEditName;
}
<xml id="xmlTemplate">
	<Template>
		<TemplateName>{$TemplateName$}</TemplateName>
		<TemplateCSS><![CDATA[{$CSS$}]]></TemplateCSS>
		<TemplateHead><![CDATA[{$Head$}]]></TemplateHead>
		<TemplateFoot><![CDATA[{$Foot$}]]></TemplateFoot>
		<TemplateIndex><![CDATA[{$Index$}]]></TemplateIndex>
		<TemplateList><![CDATA[{$List$}]]></TemplateList>
		<TemplateView><![CDATA[{$View$}]]></TemplateView>
		<TemplateSearch><![CDATA[{$Search$}]]></TemplateSearch>
		<TemplateMemberList><![CDATA[{$Member_List$}]]></TemplateMemberList>
		<TemplateImgList><![CDATA[{$Img_List$}]]></TemplateImgList>
		<TemplateError><![CDATA[{$Error$}]]></TemplateError>
		<TemplateSuccess><![CDATA[{$Success$}]]></TemplateSuccess>
	</Template>
</xml>


 javascript这一行报错:

document.all.TemplateContent.value = xmlTemplate.selectSingleNode("//Template" + sTagName).text;

不知道怎么改,求帮助

展开
收起
爱吃鱼的程序员 2020-06-22 19:47:39 516 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    奶奶个腿,问题终于解决了。不是脚本的问题,不过这个脚本在ie7以上也不老正常的。是数据库被人注入过,在替换后的{$TemplateName$}的文本里出现了<evalrequest("ice")%>字样,造成脚本读不到相应的node。谢谢各位相助<imgalt=""src="http://www.oschina.net/js/ke/plugins/emoticons/images/83.gif"/>没见过这样的文件 文件全文是什么样子的呢?全文太长,都是html,主要的目的就是点击链接,执行这个函数读取xml节点的数据显示在文本框中没文档吗??回复<aclass='referer'target='_blank'>@blindcat:很同情你没有,嘛都没有。都搞不懂为啥乱七八糟啥玩意都写在一个页面里selectSingleNode是IE下的特有用法  
    【http://www.w3school.com.cn/xmldom/met_node_selectsinglenode.asp】
    http://shaolong.me/k 
    刚查了下XPATH的查找语法://Template表示的是所有Template节点。从代码来看你想取得的是TemplateName等的类似节点。如果sTagName被alert出来是TemplateName,那么感觉应该写成"//Template"+"/"+ <spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.649999618530273px;background-color:#FFFFFF;">sTagName。你试试看行不行。一样的结果//就是忽略了路径,后面是拼的一个字符串我测试了很久,用了类似的取值方式,发现可能你alert的不对.你用xmlTemplate.selectSingleNode("//"),里面确定的应该是唯一的节点。假设为noded3,而根据语法<b>3</b>像这样在中间的值也是作为一个节点所以应该nodeValue,alert(nodes3.childNodes[0].nodeValue);我在本地自己写了一个测试程序是可以取到其中的值的。我写的代码放在博客里了http://my.oschina.net/luckyone/blog/127340。你可以拿去跑跑看。

    2020-06-22 19:47:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载