如何使用其他元素值中的条件来编辑xml

时间:2018-08-04 11:56:44

标签: java xml talend

我正在尝试通过基于其他元素的值来更改某些元素的值来编辑XML文件,但我似乎没有通过。我正在使用talend,尽管我有点新,但至少可以读取和输出XML文件,并且可以对元素值进行一些细微更改,尽管基于某些条件的更改(我在下面解释)失败了。以下是我在这种情况下使用的XML和代码:

XML:

<?xml version="1.0" encoding="UTF-8" ?>
<ZipBill>
<NonUsage>
<Details Service="Mobile"  Lines="1"  Amount="10000" />
<Details Service="Landline"  Lines="1"  Amount="10000" />
</NonUsage>
<Usage>
<Details Service="Mobile"  Amount="191084" />
<Details Service="Landline"  Amount="73544" />
</Usage>
<WithoutTax>
<Details  Description="Total before Tax" Amount="284628" />
</WithoutTax>
<TotalTax>
<Details  Description="VAT(18%)" Amount="51233" />
<Details  Description="Excise Duty(12%)-GSM" Amount="31755" />
<Details  Description="Excise Duty(5%)-Fixed line" Amount="0" />
</TotalTax>
<TotalAmount>
<Details  Description="Total Inclusive Tax" Amount="367616" />
</TotalAmount>
</ZipBill>

现在,我想做的是更改元素为<TotalTax>的{​​{1}}标签中的数量值,并使元素为{{1 }},其中元素为<Details Description="Excise Duty(5%)-Fixed line" Amount="0" />,并在用法标签中将元素设为<Details Service="Landline" Amount="73544" />,使其值为0.05 * amount。换句话说,我想在<Details Description="Excise Duty(12%)-GSM" Amount="31755" />下的{{1}中的<Details Service="Mobile" Amount="191084" />中搜索金额值,并将其乘以0.12,然后替换{{1}下的<Details>中的<usage>中的金额},将Service="Landline"<Details>乘以0.12,然后将<TotalTax>Description="Excise Duty(5%)-Fixed line"Service="Mobile"中的金额替换。 我在talend中定义了三个变量来进行剧院替换,但是我在xml中得到了重复的字段。关于如何修改这些变量或任何其他选项的任何想法都将有所帮助。 我使用的变量:

<Details>

我得到的输出错误:

<TotalTax>

0 个答案:

没有答案