我有下面的JAXB注释类(用XJC生成)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ReplicateTransactionDataNotificationType", namespace = "http://esb.pkobp/adapter/calypso/tradekast/transaction", propOrder = {
"operationContext",
"transactionData"
})
public class ReplicateTransactionDataNotificationType
implements Serializable
{
@XmlElement(name = "OperationContext", required = true)
protected OperationContextType operationContext;
@XmlElement(name = "TransactionData")
protected TransactionDataType transactionData;
public OperationContextType getOperationContext() {
return operationContext;
}
public void setOperationContext(OperationContextType value) {
this.operationContext = value;
}
public TransactionDataType getTransactionData() {
return transactionData;
}
public void setTransactionData(TransactionDataType value) {
this.transactionData = value;
}
}
当以下面的方式解组它时,一切都很好:
JAXBContext ctx = JAXBContext.newInstance(ReplicateTransactionDataNotificationType.class);
Unmarshaller unmarshaller = ctx.createUnmarshaller();
JAXBElement<ReplicateTransactionDataNotificationType> result;
result = unmarshaller.unmarshal(new StreamSource(new ByteArrayInputStream(xmlString.getBytes())), ReplicateTransactionDataNotificationType.class);
当按以下方式解组时,它将崩溃,出现异常
(ReplicateTransactionDataNotificationType)unmarshaller.unmarshal(new StringReader(xmlString));
例外:
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://esb.pkobp/adapter/calypso/tradekast/transaction", local:"caltradetran_ReplicateTransactionDataNotification"). Expected elements are (none)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1049)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:194)
at myPackage.XMLTranslationResolver.main(KondorXMLTranslationResolver.java:120)
有人能解释这种奇怪的行为吗?
正在解组的XML文件粘贴在下面:
<?xml version="1.0" encoding="UTF-8"?>
<caltradetran:caltradetran_ReplicateTransactionDataNotification xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:caltradetran="http://esb.pkobp/adapter/calypso/tradekast/transaction"
xmlns:tran="http://esb.pkobp/cdm/treasury/transaction">
<OperationContext>
<RequestID>98573c9c-6167-4edb-a5ff-8ad3db9983ef</RequestID>
<EventSource>KONDOR</EventSource>
<EventDate>2012-11-13T12:13:42.937+01:00</EventDate>
</OperationContext>
<TransactionData>
<ExternalReferenceKp>FWD57658</ExternalReferenceKp>
<DealTableID>95</DealTableID>
<Action>INS</Action>
<TransactionAdditionalData>
<ExternalReferenceKp>FWD57658</ExternalReferenceKp>
<ExternalReferenceTr/>
<ClientPID>123456</ClientPID>
<ProductSubType>FXForward</ProductSubType>
<SourceSystem>Kondor+</SourceSystem>
<AdditionalParameterList>
<Parameter>
<Name>TransactionType</Name>
<ValueType>string</ValueType>
<StringValue>Spekulacja</StringValue>
</Parameter>
<Parameter>
<Name>ReceiveFrom_AccountNo</Name>
<ValueType>string</ValueType>
<StringValue>test</StringValue>
</Parameter>
<Parameter>
<Name>ReceiveFrom_SettleMethod</Name>
<ValueType>string</ValueType>
<StringValue>DIRECT</StringValue>
</Parameter>
<Parameter>
<Name>ReceiveTo_AccountNo</Name>
<ValueType>string</ValueType>
<StringValue>test</StringValue>
</Parameter>
<Parameter>
<Name>ReceiveTo_SettleMethod</Name>
<ValueType>string</ValueType>
<StringValue>DIRECT</StringValue>
</Parameter>
<Parameter>
<Name>PayFrom_AccountNo</Name>
<ValueType>string</ValueType>
<StringValue>test</StringValue>
</Parameter>
<Parameter>
<Name>PayFrom_SettleMethod</Name>
<ValueType>string</ValueType>
<StringValue>DIRECT</StringValue>
</Parameter>
<Parameter>
<Name>PayTo_AccountNo</Name>
<ValueType>string</ValueType>
<StringValue>test</StringValue>
</Parameter>
<Parameter>
<Name>PayTo_SettleMethod</Name>
<ValueType>string</ValueType>
<StringValue>DIRECT</StringValue>
</Parameter>
</AdditionalParameterList>
</TransactionAdditionalData>
<ForwardDeal>
<FILE>1105_133831_INS.00057658.00072904</FILE>
<ACTION>INS</ACTION>
<TRANS_ID>72904</TRANS_ID>
<XACTKEY>350000000353842604</XACTKEY>
<OPERATIONS>3</OPERATIONS>
<MAIN_DEAL_TABLE_ID>95</MAIN_DEAL_TABLE_ID>
<MAIN_DEAL_ID>57658</MAIN_DEAL_ID>
<ORIGINAL_TYPE_OF_EVENT>K</ORIGINAL_TYPE_OF_EVENT>
<DEALS_INSTRUMENT_ID>13</DEALS_INSTRUMENT_ID>
<DEALS_OPERATION_ID>0</DEALS_OPERATION_ID>
<MESSAGE_SOURCE>RealTime</MESSAGE_SOURCE>
<DEALS_OPERATION>INSERT</DEALS_OPERATION>
</ForwardDeal>
</TransactionData>
</caltradetran:caltradetran_ReplicateTransactionDataNotification>
创建< code>JAXBContext时,需要包含< code>ObjectFactory类。< code>ObjectFactory包含< code>@XmlElementDecl批注,这些批注包含根元素信息。我建议在生成的模型的包名上创建< code>JAXBContext。
欲了解更多信息
问题内容: 在非官方指南中有一个占位符答案,带有指向(对我而言)似乎无关的文章的链接。 我使用XJC生成我的JAXB类,尽管它们大多数按预期相互映射,但有些元素被映射到。这对于带有循环的图最令人讨厌,其中有时Foo元素的父节点将是,而它本身没有父属性,从而中断了循环。 我可以想到各种解决方法,但是如果有人可以向我解释这种行为,那就更好了。为什么JAXB有时将元素映射到而不是Foo? 问题答案: 在
我想使用JAXB来 将xml解组为java对象, 将其封送回xml 并使用名称空间生成完全相同的输出 下面是原始的 XML: 我正在使用以下POJO: 我用于取消/编组的代码: 这实际上不起作用,我甚至无法解组初始xml。但是如果我尝试封送一个POJO,我只在代码中设置字段。我得到以下结果: 我如何摆脱这个ns3前缀?
我使用JAXB从SOAP响应中解析xml元素。我已经为xml元素定义了POJO类。我已经测试了没有名称空间和前缀的pojo类,它工作得很好。需求是解析来自SOAPMessage对象的输入
我有两个代码,在两个不同的java项目中,执行几乎相同的操作(根据xsd文件解组Web服务的输入)。 但在一个例子中,我应该这样写:(Input是一个占位符名称)(element是OMElement Input) 在另一个库中,我必须使用JAXBElement。getValue(),因为它是返回的JAXBElement,并且简单(输入)转换会崩溃: 你知道是什么导致了这种差异吗?
问题内容: 我正在尝试从FpML(金融产品标记语言)4.5版生成Java类。生成了大量代码,但是我不能使用它。尝试序列化一个简单的文档,我得到以下信息: 实际上,没有任何类具有@XmlRootElement批注,那么我该怎么做呢?我将xjc(JAXB 2.1)指向fpml-main-4-5.xsd,其中包括所有类型。 问题答案: v
我关注了 json 根据给出的答案,我尝试了以下 我得到一个空数组,有如下错误。有什么建议吗? json:无法将数组解组为map[string]*json.RawMessage类型的Go值