marshalling 相关问题

编组是将对象的存储器表示转换为适合于存储或传输的数据格式的过程

`Marshal.SizeOf<T>()` 和 `Marshal.SizeOf<T>(T 结构)` 的行为不一致

我看到 Marshal.SizeOf<> 方法重载的行为不一致。为了简洁起见,我在这里仅考虑通用重载。 这是在 .NET 8 运行时尝试的。 问题 1:Marshal.Si...

回答 1 投票 0

为什么 (encoder).EncodeElement 忽略“,innerxml”标签?

目的:我有一个 xml 文档,其中包含许多混合内容 cdata 元素,我需要以编程方式编辑它们。令人烦恼的是,因为 cdata 元素有其他/混合内容,默认的“,c ...

回答 1 投票 0

C# 编组双包装结构 - 为什么 Double 行为奇怪?

我正在为用 C 实现的动态链接库编写一个包装器。 许多函数返回本质上是标准的、非托管的、blittable 类型,如 int、long long 和 double。为了不同...

回答 1 投票 0

在golang中检查JSON字符串是否有效

我想检查来自我的应用程序的接口是否是有效的json。我已经搜索过。它可能与这里重复:重复(但它不起作用)我找到了一些方法。

回答 2 投票 0

Java 迁移 JDK 11 到 JDK 17 未能通过 Jakarta Marshal 进行 Junit 测试

我在 JDK11 上有一个使用 Spring Boot 2.7.11 的应用程序和一个使用 jaxb javax.xml.bind.Marshaller 的 Junit 测试。一切正常 但我必须使用 Spring Boot 2.7.18 迁移到 JDK17。所以我已经更换了...

回答 1 投票 0

go-toml元帅失败

以下程序尝试编组结构并写入文件。 该结构是嵌套的并且包含 toml 标签。 我没有收到任何错误消息,它似乎是正确的。 结构的打印...

回答 1 投票 0

C#中COM对象的实际地址

我有一个COM对象,我试图获取它的实际底层地址,这样我就可以获得vtable的地址。我需要这是一个有效的数字地址,因为我需要能够...

回答 1 投票 0

将字节数组传递给 PInvoke 调用会将其更改为 null

从 Visual Studio 2012 迁移到 2013 后,某些 PInvoke 调用无法像以前一样工作。 例如,我正在努力处理这段代码: 签名: [Dll导入(LzoDll64位)] 私人静态...

回答 1 投票 0

如何在 Jakarta JAX-B 编组期间组合并包含自定义“NamespacePrefixMapper”和“HashMap”中的名称空间,

我正在尝试使用 Jakarta JAXB 编组器编组 Java 对象,除了在生成的 XML 中包含命名空间之外,一切都运行良好。 我有一些自定义命名空间...

回答 1 投票 0

Jaxb 编组与 nillable = true 在集合上不起作用

我有DTO: @Builder @NoArgs构造函数 @AllArgsConstructor 公共类我的数据{ 私有字符串负载; @数据 @Builder @NoArgs构造函数 @AllArgsConstructor @XmlRootE...

回答 1 投票 0

在 C# 中使用 CryptUI 库对字节数组进行签名

我能够使用以下代码成功地使用此页面上的信息,使用 x509 证书(.pfx 文件)对文件进行数字签名: 常量 Int32 CRYPTUI_WIZ_NO_UI = 1; 常量...

回答 1 投票 0

无法使用 JAXB 编组器为来自不同包的嵌套对象生成 XML

**XSD1** **XSD1** <xs:complexType name="Root1"> <xs:sequence> <xs:element name="Revision" type="xs:string" /> <xs:element name="Header" type="Header" /> <xs:element name="Body" type="SwAny" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="SwAny" mixed="true"> <xs:sequence> <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> The JAVA Object for the above XSD is like below @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "root1", propOrder = { "revision", "header", "body" }) public class Root1 implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "Revision", required = true) protected String revision; @XmlElement(name = "Header", required = true) protected SAA_Header header; @XmlElement(name = "Body") protected SAA_SwAny body; -- getter and setter -- } @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "SwAny", propOrder = { "content" }) public class SAA_SwAny implements Serializable { private final static long serialVersionUID = 1L; @XmlMixed @XmlAnyElement protected List<Object> content; } I have another XSD which I have marshalled and generated POJO objects like below @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Header", propOrder = { "fr", "to" }) public class Header implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "Fr", required = true) protected PartyChoice__1 fr; @XmlElement(name = "To", required = true) protected PartyChoice__1 to; -- getter & setter -- } In my class where I marshall, I create like below and marshall Header header = new Header(); header.setFr(fr); header.setTo(to); Root1 **pdu** = new Root1(); **pdu**.setRevision("rev"); SAA_SwAny any = new SAA_SwAny(); any.getContent().add(header); Marshaller mars = cfgsvc.createMarshaller(jaxbCtx, true, "UTF8", false, localPart); String schemaLoc = cfgsvc.findSchemaLoc(localPart); JAXBElement<?> elm = new JAXBElement(xmlQName, docCls, **pdu**); sw = new StringWriter(); mars.marshal(elm, sw);` 按照上面的代码执行时,遇到下面的异常 原因:com.sun.istack.SAXException2:无法将类型“com.test.Header”封送为元素,因为它缺少 @XmlRootElement 注释 在 com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:225) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:274) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:78) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:101) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:293) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:619) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:114) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:293) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:619) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:114) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:98) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:127) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:244) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:251) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:33) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:461) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:292) ~[jaxb-impl-2.0.1.jar:2.0.1] The workaround i did was in the header class added the below code **@XmlRootElement(name = "header", namespace = "head.namespace")** @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Header", propOrder = { "fr", "to" }) public class Header implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "Fr", required = true) protected PartyChoice__1 fr; @XmlElement(name = "To", required = true) protected PartyChoice__1 to; -- getter & setter -- } now the xml marshaller works as expected and i get the below xml <?xml version="1.0" encoding="UTF8" standalone="yes"?> <PDU xsi:schemaLocation="...." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Revision>rev</Revision> <Body> <head:Hdr> <head:Fr> <head:Id> <head:InstnId> <head:FI>AAAASGSGXXX</head:FI> </head:InstnId> </head:Id> </head:Fr> <head:To> <head:Id> <head:InstnId> <head:FI>AAAASGSGXXX</head:FI> </head:InstnId>`your text` </head:Id> </head:To> </head:Hdr> </Body> </PDU> 我期待一个无需手动添加 @xmlrootelement 的解决方案。 JAXB 有办法解决这个问题吗? 假设您正在使用像以前的 maven-jaxb2-plugin 这样的工具,并使用 jaxb api 3+ (雅加达版本),您可以使用以下绑定文件告诉 xjc 在生成的每个类上添加 @XmlRootElement (有趣的是部分是<xjc:simple/>) <?xml version="1.0" encoding="UTF-8"?> <jxb:bindings xmlns:jxb="https://jakarta.ee/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc" jxb:version="3.0"> <jxb:globalBindings> <xjc:simple/> </jxb:globalBindings> </jxb:bindings> 希望对你有帮助。 我说的是以前的maven-jaxb2-plugin,因为该插件在最新版本中被重命名(查看迁移指南)

回答 1 投票 0

将结构编组到指针 - Byte 可以,Byte() 不行

我试图从结构中获取指针,将其传递给非托管 DLL。 如果我使用这个结构,奇怪的事情如下: 结构信息 公共 x 作为字节 末端结构 ...

回答 1 投票 0

vb.Net Marshal 结构到指针 - Byte 可以,Byte() 不行

我试图从结构中获取指针,将其传递给非托管 DLL。 如果我使用这个结构,奇怪的事情如下: 结构信息 公共 x 作为字节 末端结构 ...

回答 1 投票 0

如何在双重嵌套结构中编组数据

以下代码已经过简化,但体现了一般功能。目前它仅适用于 Struct1 和 Struct2,但我需要添加第三个结构。问题是尺寸...

回答 1 投票 0

C#:如何在双重嵌套结构中编组数据

以下代码已经过简化,但体现了一般功能。目前它仅适用于 Struct1 和 Struct2,但我需要添加第三个结构。问题是尺寸...

回答 1 投票 0

如何进行 asn1 marshal/unmarshal 并省略字段?

类型承载结构体{ CreatedAt time.Time `asn1:"广义"` ExpiresAt time.Time `asn1:"generalized"` 随机数字符串 签名 []byte `asn1:&qu...

回答 1 投票 0


未导出类型的 JSON 编组

我想使用未导出的自定义类型并定义一个接口来使用它。自定义类型将实现该接口,除了从 JSON 解组之外,一切正常。 我...

回答 1 投票 0

如何在结构字段上不使用 omitempty 进行 json 编组

我有一个生成的类型A, 我想 json.Marshal 类型并在测试时忽略任何空字段。 生成的类型没有 json:",omitempty" 对于任何结构字段,也不会...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.