草庐IT

Marshalling

全部标签

java - JAXB 编码列表映射

我有一张需要编码的列表图。我创建了XML适配器,但在创建JAXB上下文时,我一直收到java.util.Listisaninterface,andJAXBcan'thandleinterfaces.。我应该如何编码列表映射?这是我的代码:@XmlRootElement(name="myClass")publicclassMyClass{@XmlJavaTypeAdapter(MapOfListsAdapter.class)protectedMap>expectedResults;我已经为map编写了适配器MapOfListsAdapater:publicclassMapOfListsA

java - Jaxb 可以编码没有根元素的子元素吗?

我不确定jaxb是否可以解决以下问题,但我还是会问。在某个项目中,我们使用具有定义模式的jaxb来创建xml文件的下一个结构。moreinnerchildrenheremoreinnerchildrenhere我们还使用jaxb的自动类生成来创建类:aaa和bbb,其中aaa是作为@XmlRootElement生成的。我们现在想在新项目中使用相同的架构,这也将与以前的项目兼容。我想做的是使用相同的jaxb生成的类,而不对模式执行任何更改,以便仅将单个bbb对象编码到xml中。JAXBContextjc=JAXBContext.newInstance("generated");Marsh

Java 编码器性能

我使用JAXB编码器以及我自己的编码器将纯Javabean对象编码为XML。据观察,它们都需要几乎相同的时间来编码。性能NotAcceptable,需要改进。我们可以通过哪些可能的方式来提高编码器的性能?喜欢线程? 最佳答案 确保只创建一次JaxB上下文实例,创建上下文需要一些时间,因为它使用反射来解析对象的注释。请注意,JAXBContext是线程安全的,但marshallers\unmarshallers不是,因此您仍然必须为每个线程创建编码器。但是,我发现在您已经拥有jaxb上下文的情况下创建编码器非常快。

java - Axis2 对象到 xml

我有一个从我的Java代码返回的Axis2对象。如何将该对象转换为XML或在控制台中将其输出为XML?我知道有很多第3方库可用于将对象序列化为XML——但如何使用Axis2做到这一点?更新:来自thislink我找到了解决方案。需要像这样获得一个OMElement:OMElementomElement=sampleElement1.getOMElement(SampleElement1.MY_QNAME,OMAbstractFactory.getOMFactory());StringomElementString=omElement.toStringWithConsume();Syst

java - EclipseLink MOXy JSON 序列化

我有一个示例类:classZoo{publicCollectionanimals;}当用MOXy序列化时,我得到:{"bird":[{"name":"bird-1","wingSpan":"6feets","preferredFood":"food-1"}],"cat":[{"name":"cat-1","favoriteToy":"toy-1"}],"dog":[{"name":"dog-1","breed":"bread-1","leashColor":"black"}]}为什么用数组指标“[]”,而bird、cat、dog不是数组?二、有没有办法去掉“bird”、“cat”、“d

c# - 从 C# 调用带有 C++ header 的 dll

我正在尝试在我有C++header的dll中调用一个方法。我正在从C#调用dll。输入是字符串,输出是二进制数据。以下3种方法中的任何一种都可能起作用,我只是不知道如何让它们中的任何一种一直起作用。C#声明是我做的,所以它们可能不正确1:我可以获取到hGlobal,但是我不知道如何从句柄中获取数据。//CMBT_LL_WINAPIINTDLLPROCLlConvertStringToHGLOBALW(LPCWSTRpszText,_PHGLOBALphMemory);[DllImport("cmll15.dll",EntryPoint="LlConvertStringToHGLOBAL

c++ - COM 互操作 : how to use ICustomMarshaler to call 3rd party component

我想使用COM互操作从C#调用COM组件中的方法。这是方法签名:longGetPrecursorInfoFromScanNum(longnScanNumber,LPVARIANTpvarPrecursorInfos,LPLONGpnArraySize)这是在C++中调用它的示例代码(我检查过它确实有效):structPrecursorInfo{doubledIsolationMass;doubledMonoIsoMass;longnChargeState;longnScanNumber;};voidCTestOCXDlg::OnOpenParentScansOcx(){VARIANTv

c# - 将包含 int 和 int[] 的结构从 C# 编码到 C++

我有一个带有非托管代码的C++DLL和一个C#UI。有一个从C++DLL导入的函数,它以我编写的结构作为参数。将我编写的结构(MyImage)从C#编码到C++后,我可以访问其中的int[]数组的内容,但内容不同。我不知道我在这里遗漏了什么,因为我花了很多时间并尝试了一些技巧来解决这个问题(显然还不够)。C#中的MyImage结构:[StructLayout(LayoutKind.Sequential)]structMyImage{publicintwidth;publicintheight;publicint[]bits;//theserepresentcolorsofimage-4

c# - 在 C++/C# 之间的结构内传递字符串/数组

我正在将结构从C#传递到C++。C#代码:[StructLayout(LayoutKind.Sequential,Pack=8)]publicstructData{[MarshalAs(UnmanagedType.U4)]publicintnumber;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicint[]array;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=512)]publicstringbuffer;}C++代码:structData{public:intnumber

c# - 将参数中带有回调函数的 C/C++ 函数编码到 C#

我的本​​机代码中有以下内容:typedefvoid(__stdcall*HandlerCallBack)(float);classASSIMP_APINewProgressHandler:publicProgressHandler{HandlerCallBackCallBack;public:boolUpdate(floatpercentage=-1.f){if(CallBack)CallBack(percentage);returntrue;}voidSetCallBack(HandlerCallBackcallback){CallBack=callback;}};voidImpo