You need to enable JavaScript to run this app. 如何使用DFDL Schema解析动态字段分隔符文本并输出XML树形结构
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DFDL Schema解析动态字段分隔符文本并输出XML树形结构

DFDL Schema 编写方案

针对你需要解析动态可变分隔符文本、兼容未知额外元素的需求,可参考以下实现方案:


前置分隔规则说明

从你提供的消息样例可推导对应分隔规则如下:

  • 不同键值对之间用&作为分隔符
  • 单个键值对内部用=分隔键名与字段值
  • 无值的字段仅保留键名,无=及后续内容

完整示例DFDL Schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
           targetNamespace="http://example.com/dfdl/dynamickv"
           xmlns:tns="http://example.com/dfdl/dynamickv"
           elementFormDefault="qualified">

  <xs:annotation>
    <xs:appinfo source="http://www.ogf.org/dfdl/">
      <dfdl:format ref="tns:DynamicKvFormat"/>
      <dfdl:defineFormat name="DynamicKvFormat">
        <dfdl:format separator="&amp;" 
                     separatorType="infix"
                     sequenceKind="ordered"
                     occursCountKind="implicit"
                     extraElements="ignore"
                     nilKind="literalValue"
                     nilValue=""
                     textTrimWhitespace="both"
                     encoding="UTF-8"/>
      </dfdl:defineFormat>
    </xs:appinfo>
  </xs:annotation>

  <!-- 根节点 -->
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence dfdl:separator="&amp;">
        <!-- 动态键值对组,适配所有可变/未知字段 -->
        <xs:element name="CLIENT_ID" type="xs:string" minOccurs="0"/>
        <xs:element name="LOCALE" type="xs:string" minOccurs="0"/>
        <xs:element name="ENCODE" type="xs:string" nillable="true" minOccurs="0"/>
        <!-- 可在此处继续添加你已知的字段定义,未知字段会被自动忽略 -->
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

关键配置说明

  • dfdl:separator="&amp;":指定键值对之间的分隔符为&,XML场景下需要做转义处理
  • extraElements="ignore":开启后解析过程会自动跳过未在Schema中定义的额外未知元素,不会抛出解析错误
  • nilKind="literalValue" + nilValue="":匹配无值的字段,自动生成你需要的自闭合标签,例如<ENCODE/>
  • minOccurs="0":所有字段设置为非必填,适配动态生成的消息结构

如果你的消息分隔符和上述规则不同,只需要调整dfdl:format中对应的分隔符配置即可。

内容的提问来源于stack exchange,提问作者Rohit Borse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 22:36:04