我创建了一个脚本,我在其中选择包含我要导入的xml文件的文件夹,创建文档并插入这些XML文件,但我的脚本以下面的消息结束,这不是很有用:“执行结果:未定义“。
任何帮助将不胜感激。
var myDocument = app.documents.add();
var MyFolderWithFiles = Folder.selectDialog ("Choose a folder");
var myFiles = MyFolderWithFiles.getFiles("*.xml");
for(var i = 0; i < myFiles.length; i++) {
myDocument.importXML(myFiles[i]);
}
答案 0 :(得分:1)
这个问题有点陈旧,但没有接受答案,所以我会看看能否提供帮助。
您创建新文档的代码在我看来就像您只是创建一个新的空白文档。您导入的XML如何知道要去哪里?可能有用的一件事是在您完成导入后检查文档中XML的“结构”。
var myDocument = app.documents.add();
当我导入XML时,我不创建新的空白文档,我从具有预定义结构的模板创建新文档,以便InDesign知道将每个XML节点放在模板中的位置。 Here是一个很好的参考,可帮助您开始设置INDT文件。
var myDoc = app.open( '//path/to/myTemplate/myTemplate.indt', OpenOption.OPEN_COPY );
// NOTE: I'm running against an InDesign server, if you're running against your ID GUI then you'll need an extra param on the app.open() call like in the following line
var myDoc = app.open( '//path/to/myTemplate/myTemplate.indt', true, OpenOption.OPEN_COPY ); // This is probably what you'll need to use
// The extra param for showingWindow should be true if running against the ID GUI, this feature is NOT available when executing against the ID server
此外,我设置了我的XML导入首选项 - 您可能与我的不同 - 因此InDesign知道该怎么做,比如说与XML导入结构形成对比的是无法匹配的XML节点。例如,这是我不时使用的xmlImportPreference集之一。
with ( myDoc.xmlImportPreferences )
{
allowTransform = false;
createLinkToXML = false;
ignoreUnmatchedIncoming = false;
ignoreWhitespace = true;
importCALSTables = false;
importStyle = XMLImportStyles.mergeImport;
importTextIntoTables = false;
importToSelected = false;
removeUnmatchedExisting = true;
repeatTextElements = true;
}
在为INDT创建XML结构的帮助下,要查看的其他内容是使用DTD(文档类型定义)文件。 Here是另一个很好的InDesign和XML帮助参考,它也详细介绍了DTD文件。一个简单的DTD文件的例子可能是这样的。
<!ELEMENT Root (Root*)>
<!ELEMENT Customer(name, Address*)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT Address(street, city, state, zip)>
<!ELEMENT street(#PCDATA)>
<!ELEMENT city(#PCDATA)>
<!ELEMENT state(#PCDATA)>
<!ELEMENT zip(#PCDATA)>
在XML中代表这样的东西:
<Root>
<Customer>
<name>Billy Bob</name>
<Address>
<street>123 Test Ave</street>
<city>Testville</city>
<state>IA</state>
<zip>12345</zip>
</Address>
</Customer>
</Root>
我希望这有助于指出正在努力解决ID和XML问题的人。有时候这可能很棘手,也很有气质。
我确实絮絮叨叨,所以如果有人觉得这很有帮助,但仍然无法让它发挥作用,我可以详细说明具体问题,你所要做的就是问! ;)快乐的编码!
答案 1 :(得分:0)
“执行完毕。结果:未定义”
意味着 文件已成功导入。
和indesign不会返回此语句的任何值...
答案 2 :(得分:0)
我是第二个Sulaiman_J。消息表明一切都很顺利。您没有导入任何内容的事实可能与xml导入选项有关。您应该检查手动xml导入并显示xml选项。检查&#34;仅导入与现有结构匹配的元素&#34;。因为如果选中此选项并且正在处理新文档,则不会存在现有结构,导入将不会注入任何节点。 这就是为什么即使InDesign说它也没有注入内容的原因。