Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个三重嵌套循环有什么不对?_Javascript_Xml_Extendscript - Fatal编程技术网

Javascript 这个三重嵌套循环有什么不对?

Javascript 这个三重嵌套循环有什么不对?,javascript,xml,extendscript,Javascript,Xml,Extendscript,我目前正在编写一个脚本,该脚本采用illustrator中有多个文本字段的artwork,并使用FileMaker XML文件中填充的文本字段复制artitem。注意:尽管这是Illustrator extendscript,但我很确定它与javascript更相关 这是XML文件中的第一条记录,让您了解: <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <ERRORCODE>0</ERR

我目前正在编写一个脚本,该脚本采用illustrator中有多个文本字段的artwork,并使用FileMaker XML文件中填充的文本字段复制artitem。注意:尽管这是Illustrator extendscript,但我很确定它与javascript更相关

这是XML文件中的第一条记录,让您了解:

<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
  <ERRORCODE>0</ERRORCODE>
  <PRODUCT BUILD="01-07-2009" NAME="FileMaker" VERSION="ProAdvanced 10.0v1"/>
  <DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="123" TIMEFORMAT=""/>
  <METADATA></METADATA>
  <RESULTSET FOUND="123">
    <ROW MODID="11" RECORDID="11116">
      <COL>
        <DATA>BB-1</DATA>
      </COL>
      <COL>
        <DATA>ELEVATOR</DATA>
      </COL>
      <COL>
        <DATA>MACHINE</DATA>
      </COL>
      <COL>
        <DATA>ROOM</DATA>
      </COL>
      <COL>
        <DATA>107</DATA>
      </COL>
      <COL>
        <DATA></DATA>
      </COL>
      <COL>
        <DATA></DATA>
      </COL>
      <COL>
        <DATA></DATA>
      </COL>
    </ROW>

0
BB-1
电梯
机器
房间
107
这是给我带来问题的障碍:

//counts the amount of records in the XML = 123
var recordsLength = contents.elements().child(4).elements().length();

//counts the amount of data elements in each record = 8
var dataLength = contents.elements().child(4).elements().child(0).elements().length();

function drawArt() {

    //this loop iterates through each record; matches the groupitem name in illustrator to the first data element in the record; and duplicates the groupitem and positions it in the document.
    for (var i = 0; i < recordsLength; i++) {
        signType = contents.elements().child(4).elements().child(i).elements().child(0).child(0).text();
        gpTarget = docRef.groupItems.getByName(signType);
        newArt = gpTarget.duplicate();
        newArt.top = y;
        newArt.left = x;
        x+=(gpTarget.width + 20);
        redraw();

        //counts the amount of text fields in each newArt (i added - 1 to the end because there is always a text field at the end that should not be filled in)
        var txtFrmLength = newArt.textFrames.length - 1;

        //this loop iterates through each data element and gets the length of it
        for (var t = 1; t < dataLength; t++) {
            nodeLength = contents.elements().child(4).elements().child(i).elements().child(t).child(0).text().length();
            //this if statement looks to see if a data element contains data or is empty; if its not empty move to next loop; if it is, go back to first loop
            if(nodeLength > 0) {
                //this loop iterates through the text fields and fills in the data from the XML
                for (var u = 0; u < txtFrmLength; u++)
                    newSign.textFrames[u].contents = contents.elements().child(4).elements().child(i).elements().child(t).child(0).text();


                } else {
                   break;
                }

            }

    }

}
drawArt();
}

main();
//计算XML中记录的数量=123
var recordsLength=contents.elements().child(4.elements().length();
//统计每个记录中的数据元素数量=8
var dataLength=contents.elements().child(4.elements().child(0.elements().length();
函数drawArt(){
//此循环遍历每个记录;将illustrator中的groupitem名称与记录中的第一个数据元素相匹配;复制groupitem并将其放置在文档中。
对于(变量i=0;i0){
//此循环循环遍历文本字段并填充XML中的数据
对于(var u=0;u
基本上,脚本应该复制并定位一个组项,将XML中的数据放入其文本字段,然后移动到下一个artitem

在第一个循环中,我将测试设置为I<2,以查看是否可以缩小问题的范围。我得到的结果是每个被复制的artitem,它的所有文本字段都用第5个数据节点填充


谁能帮我找出我做错了什么?谢谢。

我觉得我应该分解内容。元素().child(4)。元素().child(I)。元素().child(t)。child(0)。text();Extendscript确实支持XPath,但我想先搞定主要逻辑,然后再继续优化和清理