【问题标题】:looping through Xml elements in indesign extendscript在indesignextendscript中循环遍历Xml元素
【发布时间】:2022-06-11 04:03:53
【问题描述】:

我正在通过 indesign 脚本读取 xml 并创建文本框。 鉴于此 xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <project name="IPS300980XX_NEW" pagecount="50">
        <styles>
            <style nome="xxx" font="Arial" fontsize="10" bold="2" center="2" />
            <style nome="yyy" font="Times" fontsize="24" bold="1" center="1" />
            <style nome="zzzz" font="Helvetica" fontsize="22" bold="2" center="1" />
        </styles>
    </project>
</root>

我正在尝试遍历“样式”节点,但没有成功。 我正在使用的代码如下(但我尝试了 xmlelements、children、items 等的几种组合:-(没有成功)。

"myxml" 是刚刚打开的 xml 文档。除了“getTheStyle”(因此是“test”)之外,每个变量都有预期值。

function creastili(){
        var styles = myxml.project.styles;
        var list = styles.child("style");
        var getTheStyle = "";
    for(var i = 0; i < list.length(); i++){
        getTheStyle = list[i];
        test = getTheStyle.toString();
        //getTheStyle is always empty.
        }
}

任何帮助将不胜感激!非常感谢。

【问题讨论】:

    标签: javascript xml adobe adobe-indesign extendscript


    【解决方案1】:

    也许您必须使用toXMLString() 而不是toString()

    此代码适用于我:

    var xml = '''<?xml version="1.0" encoding="UTF-8"?>
    <root>
        <project name="IPS300980XX_NEW" pagecount="50">
            <styles>
                <style nome="xxx" font="Arial" fontsize="10" bold="2" center="2" />
                <style nome="yyy" font="Times" fontsize="24" bold="1" center="1" />
                <style nome="zzzz" font="Helvetica" fontsize="22" bold="2" center="1" />
            </styles>
        </project>
    </root>''';
    
    
    function creastili(xml) {
        var root = new XML(xml);
        var list = root.project.styles.children();
        for(var i = 0; i < list.length(); i++){
            var getTheStyle = list[i];
            var test = getTheStyle.toXMLString();
            alert(test);
        }
    }
    
    creastili(xml);
    

    【讨论】: