InDesign CS5脚本:如何在XML结构窗格上自动“Alt +单击”?

时间:2012-08-07 15:00:49

标签: xml adobe-indesign extendscript


我有这个脚本,它显示View --> Show Structure窗格:

with(obj.doc.xmlViewPreferences)
{
    // this opens the View --> Show Structure pane
    showStructure = true;

    showTagMarkers = true;
    showTaggedFrames = true;
    showTextSnippets = true;
}


但是,根节点保持最小化。我发现按住Alt键并单击此根节点扩展整个树。

那么有没有一种方法可以在这个根节点上以编程方式执行“Alt + click”? 我正在使用Windows和CS5。

1 个答案:

答案 0 :(得分:1)

您可以通过选择节点来结束。例如。要选择第3级的所有元素,并且在上面的级别上展开所有元素,您将使用

app.select(
    app.activeDocument.xmlElements.item(0) // the root element
    .xmlElements.everyItem() // repeat this line for each nesting level
    .xmlElements.everyItem() // and so forth
    .getElements() // provide an array with the actual selectable items
);

对指示的行重复更深层次。使用以下代码段,您还可以选择没有子项的元素的XML属性:

.xmlAttributes.everyItem()

最后取消选择以清理选择要点。

app.select(null);

编辑:对于任意深度,您可以使用循环。它只是应该确保在请求它们之前XMLElement / XMLAttribute集合中有元素。结果代码:

var items = app.activeDocument.xmlElements.everyItem();
while( items.xmlElements.length ) {
    items = items.xmlElements.everyItem();
    app.select(items.getElements());
    if( items.xmlAttributes.length )
        app.select(items.xmlAttributes.everyItem().getElements());
}
app.select(null);