首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一行中使用DFDL解析输入

在一行中使用DFDL解析输入
EN

Stack Overflow用户
提问于 2019-06-25 18:21:29
回答 1查看 119关注 0票数 0

我有一个MT940消息的数据集

C 180731 LKR 50000,00

我希望这显示为一个XSD。有人能帮我处理XSD吗。

C180731LKR50000,00

EN

回答 1

Stack Overflow用户

发布于 2019-06-25 20:03:45

以下代码使用Apache Daffodil 2.3.0进行了测试

代码语言:javascript
复制
<xs:schema
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/">

  <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd" />

  <xs:annotation>
    <xs:appinfo source="http://www.ogf.org/dfdl/">
      <dfdl:format ref="GeneralFormat"
        representation="text" />
    </xs:appinfo>
  </xs:annotation>

  <xs:element name="MT940">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CreditDebitIndicator" type="xs:string"
          dfdl:lengthKind="explicit" dfdl:length="1" />
        <xs:element name="Date" type="xs:date"
          dfdl:lengthKind="explicit" dfdl:length="6"
          dfdl:calendarPatternKind="explicit" dfdl:calendarPattern="yyMMdd" />
        <xs:element name="Currency" type="xs:string"
          dfdl:lengthKind="explicit" dfdl:length="3" />
        <xs:element name="Amount" type="xs:decimal"
          dfdl:lengthKind="delimited" dfdl:textNumberCheckPolicy="strict"
          dfdl:textNumberPattern="#0.00"
          dfdl:textStandardDecimalSeparator=","
          dfdl:textStandardGroupingSeparator="." />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

解析示例数据会产生以下XML:

代码语言:javascript
复制
<MT940>
  <CreditDebitIndicator>C</CreditDebitIndicator>
  <Date>2018-07-31</Date>
  <Currency>LKR</Currency>
  <Amount>50000</Amount>
</MT940>

注意,数量没有任何小数,因为分数部分是00,而Daffodil输出规范化的数字。如果数量类似于“5000099”,它将输出为<Amount>50000.99</Amount>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56751823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档