gpt4 book ai didi

java - BeanIO 的 Xml 映射,列表未正确解释

转载 作者:行者123 更新时间:2023-12-02 01:37:34 25 4
gpt4 key购买 nike

我请求有关此 BeanIO Xml 映射的帮助。由于某种原因,列表段未正确解释为列表根据引用指南,这应该像下面的代码示例一样进行编码,但是在这种情况下,我会收到如下所示的错误消息。

如果我将集合标记更改为以下内容,则 xml 文件会正确转换为 bean,但只会读取一个 ePrestation。 (这也与引用指南冲突)

你知道我可能做错了什么吗?或者可以使用其他解决方案将此 xml 正确转换为 bean?

Exception in thread "main" org.beanio.BeanIOConfigurationException: Invalid segment 'ePrestation', in segment 'ePrestationList', in segment 'eattest', in record 'registerEattestRequest', in stream 'requestStream': No such property 'ePrestation' in class 'be.cm.apps.application.beanz.Eattest'
at org.beanio.internal.compiler.ProcessorSupport.process(ProcessorSupport.java:93)
at org.beanio.internal.compiler.ParserFactorySupport.createStream(ParserFactorySupport.java:95)
at org.beanio.internal.compiler.xml.XmlParserFactory.createStream(XmlParserFactory.java:51)
at org.beanio.internal.compiler.StreamCompiler.createStreamDefinitions(StreamCompiler.java:149)
at org.beanio.internal.compiler.StreamCompiler.loadMapping(StreamCompiler.java:103)
at org.beanio.internal.DefaultStreamFactory.load(DefaultStreamFactory.java:58)
at org.beanio.StreamFactory.loadResource(StreamFactory.java:215)
at org.beanio.StreamFactory.loadResource(StreamFactory.java:198)
at be.cm.apps.application.beanz.ExampleReader.readRequestBean2(ExampleReader.java:62)
at be.cm.apps.application.Main.main(Main.java:29)
Caused by: org.beanio.BeanIOConfigurationException: No such property 'ePrestation' in class 'be.cm.apps.application.beanz.Eattest'
at org.beanio.internal.compiler.ParserFactorySupport.getPropertyDescriptor(ParserFactorySupport.java:1331)
at org.beanio.internal.compiler.ParserFactorySupport.reflectCollectionType(ParserFactorySupport.java:1143)
at org.beanio.internal.compiler.ParserFactorySupport.reflectAggregationType(ParserFactorySupport.java:988)
at org.beanio.internal.compiler.ParserFactorySupport.finalizeSegmentIteration(ParserFactorySupport.java:709)
at org.beanio.internal.compiler.ParserFactorySupport.finalizeSegment(ParserFactorySupport.java:697)
at org.beanio.internal.compiler.ProcessorSupport.handleComponent(ProcessorSupport.java:135)
at org.beanio.internal.compiler.ProcessorSupport.handleComponent(ProcessorSupport.java:133)
at org.beanio.internal.compiler.ProcessorSupport.handleComponent(ProcessorSupport.java:133)
at org.beanio.internal.compiler.ProcessorSupport.handleComponent(ProcessorSupport.java:125)
at org.beanio.internal.compiler.ProcessorSupport.handleComponent(ProcessorSupport.java:109)
at org.beanio.internal.compiler.ProcessorSupport.process(ProcessorSupport.java:46)
... 9 more

Process finished with exit code 1

定义文件:

<beanio xmlns="http://www.beanio.org/2012/03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.beanio.org/2012/03 http://www.beanio.org/2012/03/mapping.xsd">

<stream name="requestStream" format="xml" xmlType="none" >
<record name="registerEattestRequest" class="be.cm.apps.application.beanz.RequestEattest" minOccurs="1" maxOccurs="1">
<segment name="requestContext" minOccurs="1" maxOccurs="1" class="be.cm.apps.application.beanz.RequestContext" >
<field name="b2bReference" />
<field name="externalReference" />
<field name="creationDate" />
<field name="creationTime" />
<field name="requestorNihii" />
<field name="messageDate" />
<field name="messageTime" />
<field name="receptionDate" />
<field name="receptionTime" />
<field name="requestorType" />
<field name="nippinReference" />
</segment>
<segment name="eattest" minOccurs="1" maxOccurs="1" class="be.cm.apps.application.beanz.Eattest" >
<field name="invoicingDate" />
<field name="invoicingTime" />
<field name="attestorNihii" />
<field name="providerFeeAmount" />
<field name="entrepriseNumber" />
<field name="receivedNissNumber" />
<segment name="ePrestationList" >
<segment name="ePrestation" class="be.cm.apps.application.beanz.ePrestation" collection="list" minOccurs="1" maxOccurs="unbounded">
<field name="order" />
<field name="creationDetailDate" />
<field name="creationDetailTime" />
<field name="providerNihii" />
<field name="prestationCode" />
<field name="quantity" />
<field name="beginDate" />
<field name="endDate" />
</segment>

</segment>
</segment>
</record>
</stream>
</beanio>

要处理的示例 xml:

<registerEattestRequest>
<requestContext>
<b2bReference>MULTI_KO2019030510:12:41</b2bReference>
<externalReference>10765515001.MULTI_KO20190305</externalReference>
<creationDate>2019-03-05</creationDate>
<creationTime>10:12:41</creationTime>
<requestorNihii>10765515001</requestorNihii>
<messageDate>2019-03-05</messageDate>
<messageTime>10:12:41</messageTime>
<receptionDate>2019-03-05</receptionDate>
<receptionTime>10:12:41</receptionTime>
<requestorType>persphysician</requestorType>
<nippinReference>MULTI_KO2019030510:12:41</nippinReference>
</requestContext>
<eattest>
<invoicingDate>2019-03-05</invoicingDate>
<invoicingTime>10:12:41</invoicingTime>
<attestorNihii>10765515001</attestorNihii>
<providerFeeAmount>24.00</providerFeeAmount>
<entrepriseNumber>0635769870</entrepriseNumber>
<receivedNissNumber>19640721 489 80</receivedNissNumber>
<ePrestationList>
<ePrestation>
<order>2</order>
<creationDetailDate>2019-03-05</creationDetailDate>
<creationDetailTime>10:12:41</creationDetailTime>
<providerNihii>10765515001</providerNihii>
<prestationCode>101010</prestationCode>
<quantity>1</quantity>
<beginDate>2019-03-05</beginDate>
<endDate>2019-03-05</endDate>
</ePrestation>
<ePrestation>
<order>3</order>
<creationDetailDate>2019-03-05</creationDetailDate>
<creationDetailTime>10:12:41</creationDetailTime>
<providerNihii>10765515001</providerNihii>
<prestationCode>144034</prestationCode>
<quantity>1</quantity>
<beginDate>2019-03-05</beginDate>
<endDate>2019-03-05</endDate>
</ePrestation>
</ePrestationList>
</eattest>
</registerEattestRequest>

涉及的类:

public class RequestEattest {

private RequestContext requestContext;
private Eattest eattest;

public RequestContext getRequestContext() {
return requestContext;
}
public void setRequestContext(RequestContext requestContext) {
this.requestContext = requestContext;
}

public Eattest getEattest() {
return eattest;
}
public void setEattest(Eattest eattest) {
this.eattest = eattest;
}
}

package be.cm.apps.application.beanz;

public class RequestContext {
private String b2bReference;
private String externalReference;
private String creationDate;
private String creationTime;
private String requestorNihii;
private String messageDate;
private String messageTime;
private String receptionDate;
private String receptionTime;
private String requestorType;
private String nippinReference;

public String getReceptionDate() {
return receptionDate;
}
public void setReceptionDate(String receptionDate) {
this.receptionDate = receptionDate;
}
public String getReceptionTime() {
return receptionTime;
}
public void setReceptionTime(String receptionTime) {
this.receptionTime = receptionTime;
}
public String getB2bReference() {
return b2bReference;
}
public void setB2bReference(String b2bReference) {
this.b2bReference = b2bReference;
}
public String getExternalReference() {
return externalReference;
}
public void setExternalReference(String externalReference) {
this.externalReference = externalReference;
}
public String getCreationDate() {
return creationDate;
}
public void setCreationDate(String creationDate) {
this.creationDate = creationDate;
}
public String getCreationTime() {
return creationTime;
}
public void setCreationTime(String creationTime) {
this.creationTime = creationTime;
}
public String getRequestorNihii() {
return requestorNihii;
}
public void setRequestorNihii(String requestorNihii) {
this.requestorNihii = requestorNihii;
}
public String getMessageDate() {
return messageDate;
}
public void setMessageDate(String messageDate) {
this.messageDate = messageDate;
}
public String getMessageTime() {
return messageTime;
}
public void setMessageTime(String messageTime) {
this.messageTime = messageTime;
}
public String getRequestorType() {
return requestorType;
}
public void setRequestorType(String requestorType) {
this.requestorType = requestorType;
}
public String getNippinReference() {
return nippinReference;
}
public void setNippinReference(String nippinReference) {
this.nippinReference = nippinReference;
}
}

public class Eattest {
private String invoicingDate;
private String invoicingTime;
private String attestorNihii;
private String providerFeeAmount;
private String entrepriseNumber;
private String receivedNissNumber;
private List<ePrestation> ePrestationList = new ArrayList<>();

public List<ePrestation> getePrestationList() {
return ePrestationList;
}
public void setePrestationList(List<ePrestation> ePrestationList) {
this.ePrestationList = ePrestationList;
}
public String getInvoicingDate() {
return invoicingDate;
}
public void setInvoicingDate(String invoicingDate) {
this.invoicingDate = invoicingDate;
}
public String getInvoicingTime() {
return invoicingTime;
}
public void setInvoicingTime(String invoicingTime) {
this.invoicingTime = invoicingTime;
}
public String getAttestorNihii() {
return attestorNihii;
}
public void setAttestorNihii(String attestorNihii) {
this.attestorNihii = attestorNihii;
}
public String getProviderFeeAmount() {
return providerFeeAmount;
}
public void setProviderFeeAmount(String providerFeeAmount) {
this.providerFeeAmount = providerFeeAmount;
}
public String getEntrepriseNumber() {
return entrepriseNumber;
}
public void setEntrepriseNumber(String entrepriseNumber) {
this.entrepriseNumber = entrepriseNumber;
}
public String getReceivedNissNumber() {
return receivedNissNumber;
}
public void setReceivedNissNumber(String receivedNissNumber) {
this.receivedNissNumber = receivedNissNumber;
}
}

public class ePrestation {
private int order;
private String creationDetailDate;
private String creationDetailTime;
private String providerNihii;
private String prestationCode;
private int quantity;
private String beginDate;
private String endDate;
public int getOrder() {
return order;
}

public void setOrder(int order) {
this.order = order;
}
public String getCreationDetailDate() {
return creationDetailDate;
}
public void setCreationDetailDate(String creationDetailDate) {
this.creationDetailDate = creationDetailDate;
}
public String getCreationDetailTime() {
return creationDetailTime;
}
public void setCreationDetailTime(String creationDetailTime) {
this.creationDetailTime = creationDetailTime;
}
public String getProviderNihii() {
return providerNihii;
}
public void setProviderNihii(String providerNihii) {
this.providerNihii = providerNihii;
}
public String getPrestationCode() {
return prestationCode;
}
public void setPrestationCode(String prestationCode) {
this.prestationCode = prestationCode;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}

最佳答案

引用4.5.2. Repeating Segments部分,定义 XML 中不应该有用于重复嵌套元素的嵌套段标记。同时嵌套标签<ePrestationList><ePrestation>输入 XML 中应相应更改。更新以下代码片段后的 XML 应该可以解决问题。

定义 XML

            ...
<field name="receivedNissNumber" />
<!-- <segment name="ePrestationList"> -->
<segment name="ePrestationList"
class="be.cm.apps.application.beanz.ePrestation" collection="list"
minOccurs="1" maxOccurs="unbounded">
<field name="order" />
<field name="creationDetailDate" />
<field name="creationDetailTime" />
<field name="providerNihii" />
<field name="prestationCode" />
<field name="quantity" />
<field name="beginDate" />
<field name="endDate" />
</segment>
<!-- </segment> -->
</segment>

输入XML

    ...
<ePrestationList>
<!-- <ePrestation> -->
<order>2</order>
<creationDetailDate>2019-03-05</creationDetailDate>
<creationDetailTime>10:12:41</creationDetailTime>
<providerNihii>10765515001</providerNihii>
<prestationCode>101010</prestationCode>
<quantity>1</quantity>
<beginDate>2019-03-05</beginDate>
<endDate>2019-03-05</endDate>
<!-- </ePrestation> -->
</ePrestationList>
<!-- <ePrestation> -->
<ePrestationList>
<order>3</order>
<creationDetailDate>2019-03-05</creationDetailDate>
<creationDetailTime>10:12:41</creationDetailTime>
<providerNihii>10765515001</providerNihii>
<prestationCode>144034</prestationCode>
<quantity>1</quantity>
<beginDate>2019-03-05</beginDate>
<endDate>2019-03-05</endDate>
<!-- </ePrestation> -->
</ePrestationList>
</eattest>

关于java - BeanIO 的 Xml 映射,列表未正确解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55002712/

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