gpt4 book ai didi

java - Smooks EDI 解析 - 重复段

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:19 26 4
gpt4 key购买 nike

我正在尝试构建一个通用的 EDI 解析器,它可以处理给定文件中不存在任何情况段的情况。使用 XML 映射中的 minOccurs="0" 属性很容易做到这一点,但是我很难弄清楚当多个段重复使用同一标记时如何处理这个问题。例如:

CAS*PR*1*793~
NM1*QC*1*SHEPHARD*SAM*O***HN*666666666A~ --PatientName
NM1*IL*1*SHEPARD*JESSICA****HN*999887777A~ --InsuredName
MIA*0***138018.4~

使用以下 XML 进行映射:

<medi:segment segcode="NM1" xmltag="PatientNameSegment" minOccurs="0" truncatable="true">
<medi:field xmltag="EntityIdentifierCode" />
<medi:field xmltag="EntityTypeQualifier" />
<medi:field xmltag="LastName" />
<medi:field xmltag="FirstName" />
<medi:field xmltag="MiddleName" />
<medi:field xmltag="NamePrefix" />
<medi:field xmltag="NameSuffix" />
<medi:field xmltag="IdentificationCodeQualifer" />
<medi:field xmltag="IdentificationCode" />
</medi:segment>
<medi:segment segcode="NM1" xmltag="InsuredNameSegment" minOccurs="0" truncatable="true">
<medi:field xmltag="EntityIdentifierCode" />
<medi:field xmltag="EntityTypeQualifier" />
<medi:field xmltag="LastName" />
<medi:field xmltag="FirstName" />
<medi:field xmltag="MiddleName" />
<medi:field xmltag="NamePrefix" />
<medi:field xmltag="NameSuffix" />
<medi:field xmltag="IdentificationCodeQualifer" />
<medi:field xmltag="IdentificationCode" />
</medi:segment>

但是,当从输入文件中删除患者姓名的第一行时,它只会将受保人姓名加载到患者姓名中,并跳过加载受保人姓名,而不是将患者姓名留空。

基本上,我想要的相当于指定“NM1*QC”作为段码(实际上将其设置为会杀死解析器)。我看到 Smooks 文档也允许正则表达式匹配,但我不确定它与什么进行比较,并且还没有尝试过它。

谢谢!

最佳答案

您需要让您的解析器限定符(第一个元素中的 QCIL)感知。我不知道您的特定产品是否以及如何做到这一点,但我很确定这通常是基本要求。五秒钟的谷歌告诉我你可以使用 segcode="NM1\*IL.*" 但我怀疑这是正确的方法。

关于java - Smooks EDI 解析 - 重复段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com