gpt4 book ai didi

java - Jibx 与多个命名空间绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 14:24:54 26 4
gpt4 key购买 nike

我有以下 XML,我需要为其开发 Jibx 绑定(bind)

<?xml version="1.0" encoding="UTF-8"?>
<conf:confirmationMessage xmlns:conf="http://webaddress/entity/confirmation/v1_0" xmlns:cli="http://webaddress/entity/client/v1_0" xmlns:cust="http://webaddress/entity/custodian/v1_0" xmlns:fin="http://webaddress/entity/financial/v1_0" xmlns:sto="http://webaddress/entity/stock/v1_0" xmlns:tra="http://webaddress/entity/trade/v1_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://webaddress/entity/confirmation/v1_0 ../XSD_V2/Confirmation.xsd ">
<conf:id>20130313588741</conf:id>
<conf:status>CS Generated</conf:status>
<conf:type>INS</conf:type>
<conf:trade>
<tra:tradeID>3068353</<tra:tradeID>
<tra:clientID>82911</<tra:clientID>
<<tra:tradeDate>2013-02-28T00:00:00</<tra:tradeDate>
</conf:trade>
</conf:confirmationMessage>

我编写了以下投标,但由于 namespace “tra”而无法工作

<?xml version="1.0" encoding="UTF-8"?>
<binding>
<mapping name="confirmationMessage" class="com.webaddress.Confirmation">
<namespace uri="http://webaddress/entity/confirmation/v1_0" default="elements"/>
<value name="id" field="id" default="default-value" usage="optional" />
<value name="status" field="status" default="default-value" usage="optional" />
<value name="type" field="type" default="default-value" usage="optional" />
<collection field="trade" factory="com.package.trades.JibxConfirmationUmarshaller.listFactory">
<!--<structure map-as="com.webaddress.Trade" />-->
<structure name="trade" />
</collection>
</mapping>

<mapping name="trade" class=om.webaddress.Trade">
<namespace prefix="tra" uri="http://webaddress/entity/trade/v1_0" default="elements"/>
<value name="tradeID" field="tradeID" default="default-value" usage="optional" />

<value name="clientID" field="clientID" usage="optional"
deserializer="com.package.trades.JibxConfirmationUmarshaller.deserializeBigInt" />

<value name="tradeDate" field="tradeDate" usage="optional"
deserializer="com.package.trades.JibxConfirmationUmarshaller.deserializeDate" />
<value name="activity" field="activity" default="default-value" usage="optional" />
</mapping>
</binding>

有什么想法可以让我完成这项工作吗?

最佳答案

The issue probably lies in the fact that the name "trade" is from the namespace
"http://webaddress/entity/confirmation/v1_0". Your jibx binding makes it assume
that "trade" is from the namespace "http://webaddress/entity/trade/v1_0".

The strings "conf" and "tra" are just abbreviations for
"http://webaddress/entity/confirmation/v1_0" and "http://webaddress/entity/trade/v1_0"

正确的答案可能是这样的:

<mapping name="trade" ns="http://webaddress/entity/confirmation/v1_0"class=om.webaddress.Trade">
<namespace prefix="tra" uri="http://webaddress/entity/trade/v1_0" default="elements"/>
<namespace uri="http://webaddress/entity/confirmation/v1_0"/>
<value name="tradeID" field="tradeID" default="default-value" usage="optional" />

<value name="clientID" field="clientID" usage="optional"
deserializer="com.package.trades.JibxConfirmationUmarshaller.deserializeBigInt" />

<value name="tradeDate" field="tradeDate" usage="optional"
deserializer="com.package.trades.JibxConfirmationUmarshaller.deserializeDate" />
<value name="activity" field="activity" default="default-value" usage="optional" />
</mapping>

您需要包含您计划使用的任何命名空间的标记,但是您需要将“ns=”添加到使用该命名空间的任何元素(除非“default=”子句适用)。在这种情况下,您不想使用“trade”元素的默认命名空间。您想使用其他命名空间。

仅当您计划使用此绑定(bind)进行输出时才需要 prefix=。

关于java - Jibx 与多个命名空间绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231962/

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