javascript读取xml出错

blindcat 发布于 2013/05/02 21:52
阅读 254
收藏 0

改别人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;

不知道怎么改,求帮助

以下是问题补充:

@blindcat:这段脚本据说N年前是正常运行的,我就搞不懂为嘛不用创建dom对象了呢? (2013/05/02 22:06)
@blindcat:alert(xmlTemplate.XMLDocument); 返回object alert(xmlTemplate.XMLDocument.selectSingleNode("/Template")); 返回null (2013/05/02 22:38)
加载中
0
blindcat
blindcat
奶奶个腿,问题终于解决了。不是脚本的问题,不过这个脚本在ie7以上也不老正常的。是数据库被人注入过,在替换后的{$TemplateName$}的文本里出现了<eval request("ice")%>字样,造成脚本读不到相应的node。谢谢各位相助
0
小白小霸王
小白小霸王
没见过这样的文件   文件全文是什么样子的呢?
blindcat
blindcat
全文太长,都是html,主要的目的就是点击链接,执行这个函数读取xml节点的数据显示在文本框中
0
WeirdBIrd
WeirdBIrd
没文档吗? ?
WeirdBIrd
WeirdBIrd
回复 @blindcat : 很同情你
blindcat
blindcat
没有,嘛都没有。都搞不懂为啥乱七八糟啥玩意都写在一个页面里
0
小白小霸王
小白小霸王
selectSingleNode是IE下的特有用法  
【http://www.w3school.com.cn/xmldom/met_node_selectsinglenode.asp】
http://shaolong.me/k 
0
Sender
Sender
刚查了下XPATH的查找语法://Template表示的是所有Template节点。从代码来看你想取得的是TemplateName等的类似节点。如果sTagName被alert出来是TemplateName,那么感觉应该写成 "//Template" + "/" +  sTagName 。 你试试看行不行。
blindcat
blindcat
一样的结果 //就是忽略了路径,后面是拼的一个字符串
0
Sender
Sender
我测试了很久,用了类似的取值方式,发现可能你alert的不对. 你用xmlTemplate.selectSingleNode("//"),里面确定的应该是唯一的节点。假设为noded3,而根据语法<b>3</b>像这样在中间的值也是作为一个节点所以应该nodeValue,alert(nodes3.childNodes[0].nodeValue);我在本地自己写了一个测试程序是可以取到其中的值的。
0
Sender
Sender
我写的代码放在博客里了http://my.oschina.net/luckyone/blog/127340。你可以拿去跑跑看。
返回顶部
顶部