我无法处理我的代码。
我有3个文件:
piante.xml
<?xml version="1.0" encoding="UTF-8" ?>
<FMPXMLRESULT
xmlns="http://www.filemaker.com/fmpxmlresult"><ERRORCODE>0</ERRORCODE><PRODUCT
BUILD="12-06-2016" NAME="FileMaker" VERSION="ProAdvanced 15.0.3"/><DATABASE
DATEFORMAT="D/m/yyyy" LAYOUT="" NAME="IndexHorti v3.12.fmp12" RECORDS="586"
TIMEFORMAT="k:mm:ss "/>
<METADATA><FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Gen Spe con spazio"
TYPE="TEXT"/><FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Localizzazione esemplare LAST"
TYPE="TEXT"/><FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Link WEB"
TYPE="TEXT"/></METADATA>
<RESULTSET FOUND="2">
<ROW MODID="56" RECORDID="20055">
<COL><DATA>Acanthus mollisL.</DATA></COL>
<COL><DATA>01-02-01-23</DATA></COL>
<COL><DATA>www.corriere.it</DATA></COL></ROW>
<ROW MODID="12" RECORDID="20057">
<COL><DATA>Achillea millefolium L.</DATA></COL>
<COL><DATA>01-05-01-16</DATA></COL>
<COL><DATA>www.repubblica.it</DATA></COL></ROW>
</RESULTSET>
</FMPXMLRESULT>
然后是一个解析XML文档的函数,如果第二个子节点与字符串“ulink”匹配则返回第三个子节点
function getLink(fname, ulink)
{
try //Internet Explorer
{
docname=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
docname=document.implementation.createDocument("","",null);
}
catch(e) {alert(e.message)}
try
{
docname.async=false;
docname.load(fname);
}
catch(e) {alert(e.message)}
}
var x=docname.getElementsByTagName("ROW");
document.write(x.length);
for (var i=0;i<x.length;i++){
var y=x[i].getElementsByTagName("DATA");
document.write(y[0].childNodes(0).nodeValue);
document.write(y[1].childNodes(0).nodeValue);
document.write(y[2].childNodes(0).nodeValue);
if(y[1].childNodes(0).nodeValue == ulink){
var z= y[2].childNodes[0].nodeValue;
document.write(y[2].childNodes(0).nodeValue);
return z;}
else{document.write("not equal");}
}
}
然后文件provadef.html进行测试
<html>
<head>
<script type="text/javascript" src="byxml.js">
</script>
</head>
<body>
<div>
<script type="text/javascript">
document.write(getLink("piante.xml","01-02-01-23"));
</script>
</div>
</body>
</html>
我插入一些doument.write指令进行调试,但我无法理解错误。你可以帮我吗?
答案 0 :(得分:0)
每次撰写childNodes(0)
时,您都应该撰写childNodes[0]
。
childNodes
是一个数组,应使用方括号访问数组元素。
括号用于分组表达式和调用函数(后者是您使用的语法)。