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名称为/PARSTOCKID
的R
的子节点,其文本值为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';
}
我想在以下场景中使用 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名称为/PARSTOCKID
的R
的子节点,其文本值为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';
}