我正在使用XML数据填充InDesign模板的自动发布流程。将XML文件添加到监视文件夹时将触发工作流。
为了确定要使用的正确InDesign模板,我需要将一些关键数据点拉入InDesign执行的JavaScript中。
例如,如果XML文件开头的元素包含“CO”(表示科罗拉多),我希望top将JS区域变量设置为“CO”,然后使用该变量来确定数据的发送位置。
已编辑:使用实际XML更新
如果XML看起来像:
<Root xmlns="kpPDCommon" xmlns:kpdc="kpPDCommon">
<region kpdc:regionCD="CO">CO</region>
<lob kpdc:lobCD="MCAR">Medicare</lob>
<serviceArea kpdc:saCD="DB">Denver Metropolitan Service Area</serviceArea>
<saPlans>
<planName>Senior Advantage (HMO)</planName>
<planName>Senior Advantage Medicare Medicaid (HMO D-SNP)</planName>
<planName>Senior Advantage (HMO-POS)</planName>
</saPlans>
...
我想在我的JS文件中使用它:
var RGN = region;
var VER = version;
然后,这些变量用于选择要将XML导入的适当InDesign模板。
我是JavaScript新手,希望得到尽可能多的指导。
但是,请注意,有问题的脚本必须是由Adobe InDesign运行的JSX脚本。它不会在浏览器中运行。InDesign是一个完全可编写脚本的应用程序,它可以在启动时运行JSX脚本,也可以在从脚本面板运行时按需运行。此脚本将用作InDesign中自动发布工作流的一部分。
我查看了以下选项,但无法找到解决方案:
- https://bytes.com/topic/xml/answers/694987-passing-xml-element-data-javascript-asp-va,我需要填充InDesign的JS变量,而xsl无法完成我的任务
- https://medium.com/frontendweb/how-to-read-local-json-file-in-react-js-564125235fc7,我正在处理大型数据文件,只想从文件的开头提取变量数据。
- https://www.youtube.com/watch?v=lUCQgqc4K2A,与#2相同,同样,我需要加载LOCAL XML文件。
- https://50linesofco.de/post/2019-07-05-reading-local-files-with-javascript,同样,我正在处理非常大的、深度嵌套的数据文件。
我还尝试了以下方法:
import("C:/Users/O146962/OneDrive - Kaiser Permanente/Desktop/Indesign Automation POC/Data/CO_DNB_Providers_Test_BR4.xml").then(response => {
return response.text();
}).then(xmlString => {
const xmlDocument = new DOMParser().parseFromString(xmlString, "text/xml");
const region = xmlDocument.querySelectorAll("region");
for (const region of region) {
const code = region.textContent;
}
console.log();
});
但到目前为止,这也没有工作,因为它不会加载本地文件。
需要说明的是,我不想加载或导入整个xml文件!我想引入一些在文档开头定义的变量。
2条答案
按热度按时间qxgroojn1#
Loic.Aigon在Adobe论坛中提供的答案:使用名称空间解析XML
似乎为了让它正常工作,需要声明文件编码。
bxfogqkk2#
可能是这样的:
结果:
更新
以下是正确的方法:
XML文件:
验证码:
结果: