Mirth,转换一个简单的入站标签值 xml 文件

Mirth, transform a simple tag value of inbound xml file

我想在以下场景中使用 mirth: 1.收到一个xml文件 2. 如果标签有特定值,则更改标签的值 3.出站结果xml

所以我很喜欢文件读取器入站连接器和文件写入器出站连接器。 我如何转换这个 xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<R>
  <NDOSM />
  <NADM>20060552</NADM>
  <DATECONS>20200205</DATECONS>
  <PRODNR />
  <PRODUCTID>1602235</PRODUCTID>
  <PRODUCTDESC>relaxine compr. pellic. 500 mg</PRODUCTDESC>
  <QTY>1.0</QTY>
  <PARSTOCKID>ethilog</PARSTOCKID>
  <PRIX />
  <STUPNR />
  <MEDNR>16822372</MEDNR>
  <CODEIDENTIFICATION />
  <SERIALNO />
  <NOMARGE />
  <PATIENTNAME>CLINT</PATIENTNAME>
  <PATIENTLASTNAME>EASTWOOD</PATIENTLASTNAME>
  <DATEOFBIRTH>19420910</DATEOFBIRTH>
  <LOTNR />
  <SERVICE />
  <SERVICEDIST>160</SERVICEDIST>
  <KEYFROMPM>20200205163309_05604132</KEYFROMPM>
  <TYPEMOUVEMENT>PREDISPOSITION</TYPEMOUVEMENT>
  <ANNULATION>N</ANNULATION>
  <PARSTOCKID-DOTATION />
  <COMMENTAIREMVT />
</R>

在这个

<?xml version="1.0" encoding="ISO-8859-1" ?>
<R>
  <NDOSM />
  <NADM>20060552</NADM>
  <DATECONS>20200205</DATECONS>
  <PRODNR />
  <PRODUCTID>1602235</PRODUCTID>
  <PRODUCTDESC>relaxine compr. pellic. 500 mg</PRODUCTDESC>
  <QTY>1.0</QTY>
  <PARSTOCKID>51</PARSTOCKID>
  <PRIX />
  <STUPNR />
  <MEDNR>16822372</MEDNR>
  <CODEIDENTIFICATION />
  <SERIALNO />
  <NOMARGE />
  <PATIENTNAME>CLINT</PATIENTNAME>
  <PATIENTLASTNAME>EASTWOOD</PATIENTLASTNAME>
  <DATEOFBIRTH>19420910</DATEOFBIRTH>
  <LOTNR />
  <SERVICE />
  <SERVICEDIST>160</SERVICEDIST>
  <KEYFROMPM>20200205163309_05604132</KEYFROMPM>
  <TYPEMOUVEMENT>PREDISPOSITION</TYPEMOUVEMENT>
  <ANNULATION>N</ANNULATION>
  <PARSTOCKID-DOTATION />
  <COMMENTAIREMVT />
</R>

仅当标记 PARSTOCKID 的值为 ethilog 时,我才必须更改入站 xml。在这种情况下,我必须用 51 替换 ethilog。 我尝试了几件事都没有成功:(

谢谢

很抱歉发布了更多的评论而不是答案,但评论太长了,它可能会帮助你到达你想要的地方。

根据 Mirth 用于更改节点文本值的方法,此 xpath 表达式

 /R//PARSTOCKID[text()='ethilog'] 

应该select名称为/PARSTOCKIDR的子节点,其文本值为ethilog;然后将文本更改方法直接应用于此子节点。

如果需要从父节点开始,这个xpath表达式

/R[//PARSTOCKID[text()='ethilog']]

应该 select 任何 R 具有名称为 /PARSTOCKID 的子节点的节点,该节点本身的文本值为 ethilog。那时(这只是一个疯狂的猜测......)你将一些变量名称分配给 selected R 节点,然后你按照

的方式做一些事情
my_var['PARSTOCKID']=51 (or maybe == "51"?)

再次抱歉,我不能说得更具体,因为我不熟悉 Mirth,但如果它能让你成功一半,那可能是值得的。

这是非常简单的 javascript 欢笑步骤。

if (msg.PARSTOCKID.toString() == 'ethilog') {
    msg.PARSTOCKID = '51';
}