在另一个文件中查找和替换XML标记之间的内容

时间:2017-09-22 08:40:09

标签: xml xml-parsing adobe-indesign

我想要完成的是: 我想自动更新我的indesign目录中的10.000价格。 唯一的方法是使用XML。 当我在indesign中标记我的表格单元格时,我可以导出一个看起来像这样的XML文件。

    -<Root>
-<Artikel>
-<Tabel aid:tcols="5" aid:trows="6" aid:table="table" xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
<Cel aid:table="cell" aid:ccols="5" aid:crows="1">.: Rollerflam </Cel>
<Cel aid:table="cell" aid:ccols="5" aid:crows="1"/>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="79.29730708729332"/>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="65.97828346376967">Artikel code</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="144.56692913385828">Omschrijving</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="42.519685039370074">Prijs / st.</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="34.01574803149606">PG</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="3" aid:ccolwidth="79.29730708729332"/>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="65.97828346376967">AIRK7274</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="144.56692913385828">Rollerflampost </Cel>
-<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="42.519685039370074">

<AIRK7274>717,00</AIRK7274>

</Cel>

<Cel aid:table="cell" aid:ccols="1" aid:crows="3" aid:ccolwidth="34.01574803149606">-</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="65.97828346376967">AIRK7275</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="144.56692913385828">Rollerflampost met lastoebehoren</Cel>
+<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="42.519685039370074">
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="65.97828346376967">AIRK7277</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="144.56692913385828">Rollerflampost +las-en snijtoebehoren</Cel>
-<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="42.519685039370074">

<AIRK7277>1055,00</AIRK7277>

</Cel>
</Tabel>
</Artikel>

-<Artikel>
-<Tabel aid:tcols="5" aid:trows="7" aid:table="table" xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
<Cel aid:table="cell" aid:ccols="5" aid:crows="1">.: Junior flessen </Cel>
<Cel aid:table="cell" aid:ccols="5" aid:crows="1"/>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="79.29730708729332"/>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="65.97828346376964">Artikel code</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="144.56692913385828">Omschrijving</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="42.519685039370074">Prijs / st.</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="34.01574803149606">PG</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="79.29730708729332"/>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="65.97828346376964">AIRK7272</Cel>
<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="144.56692913385828">Fles met vulling van 2.30m³ zuurstof</Cel>
-<Cel aid:table="cell" aid:ccols="1" aid:crows="1" aid:ccolwidth="42.519685039370074">

<AIRK7272>345,00</AIRK7272>

</Cel>

这些只是一些文章。 现在我列出了所有这些带有标签的文章

<AIRK7274>222</AIRK7274>
<AIRK7275>222</AIRK7275>
<AIRK7277>1055</AIRK7277>
<AIRK7272>345</AIRK7272>
<AIRK7271>309</AIRK7271>
<AIRK7276>310</AIRK7276>
<AIRK7270>310</AIRK7270>
<AIR01150>42</AIR01150>
<AIR02150>42</AIR02150>
<AIR08193>42</AIR08193>
<AIR08197>42</AIR08197>
<AIR73142>39,5</AIR73142>
<AIRK7250>291</AIRK7250>
<AIRK7280>435</AIRK7280>
<BI1410>15,746</BI1410>

是否可以将indesign文件的XML标记之间的内容替换为我的文件内容? 我已经阅读过关于XML解析器和正则表达式的内容,但我还没有真正理解它。 任何人都可以尝试给我一个很好的解释,并告诉我,我可能实现的目标是什么?非常感谢提前!

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

3 个答案:

答案 0 :(得分:0)

通过访问InDesign Scripting DOM,可以采用以下方法:

&#13;
&#13;
<option>
&#13;
&#13;
&#13;

Before script is run After Script is run. Prices get doubled…

答案 1 :(得分:0)

确实,“时代2”就是你能做的一个例子。要在需要时“舍入”数字,它们有很多种方法,但快速修复可以包括:

xe.contents = String(Number ( String(tag).replace (/,/g, "." ) )*2).replace (/\./g, "," ).replace ( ',00', '' );

答案 2 :(得分:0)

@Loic

我想我找到了答案。 我删除了

xe.contents = String(Number ( String(tag).replace (/,/g, "." ) )*2).replace (/\./g, "," );

并将其替换为

xe.contents = String(tag).replace (/,/g, "." ) .replace (/\./g, "," );

似乎工作和问题解决了谢谢Loic的帮助!