xml - 在 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>
解决方案
您要求做的事情将创建一个无效的 XML 输出。<Accounts>
是 XML 文档的根标记。如果您删除它,那么输出将不是有效的 XML,除非您用不同的根标记替换它。任何应该消耗该输出的东西都会将其视为无效而拒绝。并且不可能使用输出应用程序/xml 通过 DataWeave 发出无效的 XML。
推荐阅读
- r - 如何将 str_sub 与管道一起使用?
- mysql - SQL如何选择具有特定值的最新记录
- javascript - 如何通过在该上下文类中的方法中创建的 onClick 函数传递 React 上下文的状态?
- ubuntu - Ubuntu 中的 Ansible Playbook 问题
- javascript - 赋予边界向右导致未对齐问题
- javascript - 无法存储数据 IndexedDB(无法在“IDBObjectStore”上执行“添加”:评估对象存储的键路径未产生值)
- deep-learning - 这种自动编码器架构的损失(binary_crossentropy)停滞在 0.601 左右
- python - 代码执行时间限制的字符串排序问题
- excel - 将日期转换为日期函数
- javascript - 静态 html 页面中的活动菜单