首页 > 解决方案 > 在 Dataweave 中生成 XML

问题描述

早上好,

我在这里发射一个闪光弹。我正在尝试映射一个对象并生成 XML。我拥有的代码是:

output application/xml
ns v1 http://services.visa.com/cam/v1
ns ns3 http://services.visa.com/cam/v2015_02
---
Accounts: {(vars.Accounts map 

    ns3#ContainerItemBaseType @("xsi:type": 'ns3:CardAccountTypeExp') : {
    ns3#UpdateType : "Add",
    ns3#Key : {
        ns3#UniqueId: "0",
        ns3#LastMaintenanceTimeStamp @("xsi:nil": 'true'): null,
        ns3#UniqueIndexId: "0",
        ns3#Pan: vars.newpan, 
        ns3#Plastic @("xsi:nil": 'true'): null
               },
    ns3#AccountNumber: $.AccountNumber,
    ns3#AccountTypeCode: $.AccountTypeCode,
    ns3#AccountType: $.AccountType,
    ns3#InstitutionId: $.InstitutionId,
    ns3#AccountQualifier @("xsi:nil": 'true'): null,
    ns3#AccountDescription @("xsi:nil": 'true'): null,
    ns3#ServiceLine: $.ServiceLine,
    ns3#ServiceLineCode: $.ServiceLineCode,
    ns3#IsFunding: $.IsFunding,
    ns3#AccountIndicator: "Primary",
    ns3#HasCreditAccess: true,
    ns3#HasDebitAccess: true,
    ns3#AccountOpenedDate @("xsi:nil": 'true'): null,
    ns3#AccountCurrencyCode_x0020_: "840",
    ns3#AccountNickName: $.AccountNickName,

  }
)}

这会生成以下 XML: xml

这几乎是正确的。我希望能够删除周围的Accounts标签。有人知道我是怎么做到的吗?

提前感谢您的帮助

院长。

这是需要生成的完整 XML。每个容器类型都被一个标签包围,使每个容器都有效。我需要生成两个 CardAccountTypeExp 容器

  <ns3:Items>
    <ns3:ContainerItemBaseType xsi:type="ns3:DigitalCardInfoTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4153423278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:LastUsedTimestamp xsi:nil="true"/>
      <ns3:UpdateTimestamp xsi:nil="true"/>
      <ns3:MaintenanceTimestamp xsi:nil="true"/>
      <ns3:StatusCode xsi:nil="true"/>
      <ns3:ActivationType>NotActivated</ns3:ActivationType>
      <ns3:CardStatusSourceId xsi:nil="true"/>
      <ns3:TransactionAccess>
        <ns3:Withdrawals>true</ns3:Withdrawals>
        <ns3:Deposits>true</ns3:Deposits>
        <ns3:Inquiries>true</ns3:Inquiries>
        <ns3:PaymentsTo>true</ns3:PaymentsTo>
        <ns3:PaymentsFrom>true</ns3:PaymentsFrom>
        <ns3:TransfersTo>true</ns3:TransfersTo>
        <ns3:TransfersFrom>true</ns3:TransfersFrom>
        <ns3:Purchases>true</ns3:Purchases>
        <ns3:ThirdPartyPayment>true</ns3:ThirdPartyPayment>
      </ns3:TransactionAccess>
      <ns3:PinFailCount>0</ns3:PinFailCount>
      <ns3:LimitGroupId>L14408</ns3:LimitGroupId>
      <ns3:LastCardstatusTimestamp xsi:nil="true"/>
      <ns3:LastActivationTimestamp xsi:nil="true"/>
      <ns3:Version xsi:nil="true"/>
      <ns3:DigitalActive>false</ns3:DigitalActive>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:Track2InfoTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4156743278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:PinAuthFlag>false</ns3:PinAuthFlag>
      <ns3:PinAuthUpdateValue xsi:nil="true"/>
      <ns3:ExpirationDate>
        <ns3:MM>10</ns3:MM>
        <ns3:YY>24</ns3:YY>
      </ns3:ExpirationDate>
      <ns3:PinAuthStatus>NaturalPinOffsetUsed</ns3:PinAuthStatus>
      <ns3:DefaultToExtExpDate>false</ns3:DefaultToExtExpDate>
      <ns3:PrevCardActivationStatus>None</ns3:PrevCardActivationStatus>
      <ns3:IssueActive xsi:nil="true"/>
      <ns3:VersionField>01</ns3:VersionField>
      <ns3:PinChangeEmailFlag>N</ns3:PinChangeEmailFlag>
      <ns3:PinChangeCellPhoneFlag>N</ns3:PinChangeCellPhoneFlag>
      <ns3:EmailNotificationRecordID xsi:nil="true"/>
      <ns3:CellPhoneNotificationRecordID xsi:nil="true"/>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:CardAccountTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>415378</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:AccountNumber>043701</ns3:AccountNumber>
      <ns3:AccountTypeCode>SAV</ns3:AccountTypeCode>
      <ns3:AccountType>Savings</ns3:AccountType>
      <ns3:InstitutionId>59954</ns3:InstitutionId>
      <ns3:AccountQualifier xsi:nil="true"/>
      <ns3:AccountDescription xsi:nil="true"/>
      <ns3:ServiceLine>Savings</ns3:ServiceLine>
      <ns3:ServiceLineCode>SAV</ns3:ServiceLineCode>
      <ns3:IsFunding>false</ns3:IsFunding>
      <ns3:AccountIndicator>Primary</ns3:AccountIndicator>
      <ns3:HasCreditAccess>true</ns3:HasCreditAccess>
      <ns3:HasDebitAccess>true</ns3:HasDebitAccess>
      <ns3:AccountOpenedDate xsi:nil="true"/>
      <ns3:AccountCurrencyCode_x0020_>840</ns3:AccountCurrencyCode_x0020_>
      <ns3:AccountNickName/>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:CHBillingAddressTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4153422086743278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:AddressExp>
        <ns3:Line1>1700 *********2</ns3:Line1>
        <ns3:Line2/>
        <ns3:Line3/>
        <ns3:City>BERKELEY</ns3:City>
        <ns3:State>CA</ns3:State>
        <ns3:ZipCode>947093402</ns3:ZipCode>
        <ns3:CountryCode>USA</ns3:CountryCode>
      </ns3:AddressExp>
      <ns3:RecordNumber>01</ns3:RecordNumber>
      <ns3:IsPreferred>Y</ns3:IsPreferred>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:CardholderNameItemTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4153422086743278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:NameExp xsi:type="ns3:NameTypeExp">
        <ns3:FirstName>M****A</ns3:FirstName>
        <ns3:LastName>F*****ES</ns3:LastName>
        <ns3:MiddleInitial>M</ns3:MiddleInitial>
        <ns3:Suffix/>
        <ns3:Title/>
      </ns3:NameExp>
      <ns3:IsPrimary>true</ns3:IsPrimary>
      <ns3:Version xsi:nil="true"/>
      <ns3:RecordNumber>01</ns3:RecordNumber>
      <ns3:PreferredFlag>Y</ns3:PreferredFlag>
      <ns3:NameType>PN</ns3:NameType>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:CustomerEmailTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4143278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:EmailType>Personal</ns3:EmailType>
      <ns3:EmailAddress>PILOE.COM</ns3:EmailAddress>
      <ns3:Version xsi:nil="true"/>
      <ns3:RecordNumber>1</ns3:RecordNumber>
      <ns3:IsPreferred>Y</ns3:IsPreferred>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:CellPhoneItemTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4153422086743278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:VersionField>01</ns3:VersionField>
      <ns3:RecordNbrField>1</ns3:RecordNbrField>
      <ns3:PreferredFlagField>Y</ns3:PreferredFlagField>
      <ns3:VerifyDataField>707768/USA/</ns3:VerifyDataField>
      <ns3:Number>7068</ns3:Number>
      <ns3:Country>USA</ns3:Country>
      <ns3:TextOpt xsi:nil="true"/>
    </ns3:ContainerItemBaseType>
    <ns3:ContainerItemBaseType xsi:type="ns3:CardIssuanceInfoTypeExp">
      <ns3:UpdateType>Add</ns3:UpdateType>
      <ns3:Key>
        <ns3:UniqueId>0</ns3:UniqueId>
        <ns3:LastMaintenanceTimeStamp xsi:nil="true"/>
        <ns3:UniqueIndexId>0</ns3:UniqueIndexId>
        <ns3:Pan>4157278</ns3:Pan>
        <ns3:Plastic xsi:nil="true"/>
      </ns3:Key>
      <ns3:PreviousPAN>4153569</ns3:PreviousPAN>
    </ns3:ContainerItemBaseType>
  </ns3:Items>

标签: xmldataweavemulesoft

解决方案


您要求做的事情将创建一个无效的 XML 输出。<Accounts>是 XML 文档的根标记。如果您删除它,那么输出将不是有效的 XML,除非您用不同的根标记替换它。任何应该消耗该输出的东西都会将其视为无效而拒绝。并且不可能使用输出应用程序/xml 通过 DataWeave 发出无效的 XML。


推荐阅读