childNodes(0).values和javascript中的字符串之间的相等性测试

时间:2017-03-31 18:23:24

标签: javascript xml

我无法处理我的代码。

我有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指令进行调试,但我无法理解错误。你可以帮我吗?

1 个答案:

答案 0 :(得分:0)

每次撰写childNodes(0)时,您都应该撰写childNodes[0]

childNodes是一个数组,应使用方括号访问数组元素。

括号用于分组表达式和调用函数(后者是您使用的语法)。