Tag: marshalling

解析的SOAP响应与接收的响应不同

我试图解析SOAP响应。 我可以使用以下行显示完整的响应。 System.out.println(“Response: ” + out.toString()); 但是,当我解析响应并对解析后的响应进行编组时,它会显示错误的响应。 package-info.java @XmlSchema( namespace = “http://v3.hotel.wsapi.ean.com/”, elementFormDefault = XmlNsForm.QUALIFIED) package com.ean; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; 我的代码 @XmlRootElement(name=”getListResponse”) @XmlAccessorType(XmlAccessType.FIELD) public class GetListResponse { @XmlElement(name=”HotelListResponse”) private HotelListResponse hotelListResponse; public GetListResponse() { this.hotelListResponse = new HotelListResponse(); } …getter and setter } @XmlRootElement(name =”HotelListResponse”) @XmlAccessorType(XmlAccessType.FIELD) public class HotelListResponse { @XmlElement(name = “customerSessionId”) String […]

如何使用JAXB删除XML中的标记

我正在使用JAXB将java对象转换为xml文件。 在我的XML文件中,我需要删除标记 不使用XSLT。 例如:删除标签订单 12324 例外结果: 12324

从未知的JAXBContext(XML)为JSON创建Marshaller

我必须使用一个只提供JAXBContext的lib来为XML对象编组和解组XML数据。 此外,我从未见过XML:只有JAXB对象传递给我。 我现在需要的是将这些对象转换为XML,而不是转换为JSON。 有没有办法从给定的JAXBContext创建一个可用于生成JSON输出的编组器? 情况是我不仅在改造数据。 我还有逻辑,它作用于XML和JSON之间的Java对象(并操纵数据)。 这也是双向转型。 JAXBContext是关于XML和Java对象之间转换的信息 – 我的目的是重用这个上下文信息,而不必使用与JAXB不同的第二种技术实现第二次转换。 JAXBContext(及其Java对象)已经拥有有关XML结构的信息; JAXB自动识别该结构是使用它的省时省力的原因。

Axis Marshaller

我有一组使用wsdl2java(Axis 1.4)创建的类,我正在寻找一种方法来解组和编组来自/到String和Object的数据。 我编写了一个JAXB unmarshaller,它适用于我们的一些较新的内部对象,因为我们使用xjc来创建类但没有时间转换旧的轴类,需要为代码找到一个marshal / unmarshal解决方案。 。 请有人指点我的方向。 谢谢!

JAXB XML Adapters通过注释工作,但不通过setAdapter工作

我理解如何使用XMLAdapter 转换不可映射的类型 ,或者仅仅更改某些对象如何序列化/反序列化为XML。 如果我使用注释(包级别或其他),一切都很好。 问题是我试图改变第三方对象的表示,我无法将源代码更改为(即为了注入注释)。 考虑到Marshaller对象有一个手动添加适配器的方法,这应该不是问题。 不幸的是,无论我做什么,我都无法通过这种方式设置适配器来“启动”。 例如,我有一个表示XYZ空间中的点的类(地心坐标)。 在我生成的XML中,我希望将其转换为lat / long / altitude(大地坐标)。 这是我的课程: 地心 package testJaxb; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class GeocentricCoordinate { // Units are in meters; see http://en.wikipedia.org/wiki/Geocentric_coordinates private double x; private double y; private double z; @XmlAttribute public double getX() { return x; } public void setX(double x) { […]

如何在java中解组ruby对象?

我有一个对象,我想抓住java中的内容。 唯一的问题是目前是ruby。 irb(main):050:0> blah => “BAh7ByIeYXV0aGVudGljYXRpb25fc3RyYXRlZ2llczAiCXVzZXJpBg%253D%253D-\ -0cdecf4edfaa5cbe4693c9fb83b204c1256a54a6” irb(main):049:0> Marshal.load(Base64.decode64(blah)) => {“authentication_strategies”=>nil, “user”=>1} 我得到了base64部分 – 所以现在一切都以字节为单位。 我如何访问第二个字符串? 我认为可以用jruby完成一些事情,但我以前从未使用它,也不知道从哪里开始。 让我在这里详细说明我的问题。 1)这些是我试图在tomcat上的servlet和apache上的merb应用程序之间共享的cookie 2)我不打算将它们存储在数据库中。 我曾考虑在memcached中使用它们,但出于其他原因我想将它们存储为cookie(是的,我很清楚所涉及的安全隐患) 我目前正在寻找jruby的Red Bridge / jruby-embed,但是因为这只有70个字节,所以我需要看一下,我觉得把所有这些开销用于这么简单的事情是荒谬的。 而不是启动一个新的问题….我现在的代码看起来像这样: // using commons Base64 b64 = new Base64(); byte[] decoded = b64.decode(cookie.getValue().getBytes()); ScriptingContainer container = new ScriptingContainer(); container.runScriptlet(“la = Marshal.load(\”” + decoded + “\”); puts la.to_s;”); 显然这不会起作用因为元帅将检查解码的前2个字节并且因为它与jruby的主要/次要版本不匹配而疯狂…. hrmss ..

getter与setter与成员之间的JAXB注释之间的区别是什么?

标题说明了一切。 我想知道在字段/ getter / setter上放置JAXB注释(如@XmlElement )之间的主要区别是什么。 在我看来(在简单的情况下)它并不重要。 我们拿这个吧 class A { private String a; public String getA() { return a; } public void setA(String a) { this.a = a; } } 现在在我看来,如果我将@XmlElement放在成员字段或getter / setter上并不重要。 它只是编组好吧。 当我需要做出改变并且什么时候重要时,是否有任何用例? 当我去解组这个(xml回到A)JAXB具体做什么? 我正在使用JAXB MOXy实现 谢谢

JAXBgenerics@XmlValue

目标是使用JAXB生成以下XML string data binary data 是否有允许通用 @XmlValue字段的解决方法(我需要存储byte[]和String数据)? 以下是我的意愿: @XmlRootElement public class Foo { private @XmlElement List bars; } @XmlRootElement public class Bar { private @XmlValue T value; // (*) } 但我得到了这个例外 (*)IllegalAnnotationException: @XmlAttribute / @ XmlValue需要引用映射到XML文本的Java类型。

JAXB Fragment Marshal没有命名空间

我正在使用我的marshaller的JAXB_FRAGMENT属性来编组WorkSet级别。 问题在于,当我封送它时,每次都为WorkSet元素提供xmlns属性。 有没有办法编组,以便它不附加xmlns属性? 这是我的XML的样子。 … .. … … 这是我正在使用上面创建的代码: FileOutputStream fos = new FileOutputStream(“import.xml”); XMLStreamWriter writer = XMLOutputFactory.newFactory().createXMLStreamWriter(fos); JAXBContext jc = JAXBContext.newInstance(WorkSet.class); Marshaller m = jc.createMarshaler(); m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); writer.writeStartDocument(); writer.writeStartElement(“Import”); writer.writeAttribute(“xmlns”,”http://www.namespace.com”); writer.writeStartElement(“WorkSets”); while(hasWorkSet){ m.marshal(workSet, writer) } writer.writeEndDocument(); writer.close();

java.rmi.MarshalException

每当我尝试从客户端调用我的ejb时,我都会收到此错误: java.rmi.MarshalException: Failed to communicate. Problem during marshalling/unmarshalling; nested exception is: java.io.InvalidClassException: com.afrikbrain.util.message.MessageInfo; local class incompatible: stream classdesc serialVersionUID = 2285009932770474121, local class serialVersionUID = -2900394430145132451 at org.jboss.remoting.transport.socket.SocketClientInvoker.handleException(SocketClientInvoker .java:122) 它为什么会发生? 以及如何解决?