Tag: unmarshalling

具有“未知”名称的JAXB映射元素

我有一个XML,它无法控制它是如何生成的。 我想通过将它解组为由我手工编写的类来创建一个对象。 其结构的一个片段如下: aaa bbb ccc 我该如何处理这类案件? 当然元素数是可变的。

Jersey:将所有POST数据都合并到一个对象中

我在我的应用程序中使用Jersey 1.8。 我试图在服务器上使用POST数据。 数据类型为application/x-www-form-urlencoded 。 有没有一种方法可以在一个对象中获取所有数据,可能是Map 。 我遇到了Jersey的@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 。 但是使用它需要我使用@FormParam ,如果参数的数量@FormParam ,这可能会很乏味。 或者可能有一种方式: @POST @Path(“/urienodedeample”) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.APPLICATION_JSON) public Response uriEncodedExample(String uriInfo){ logger.info(uriInfo); //process data return Response.status(200).build(); } 上面的代码使用String对象中的表单数据并将其呈现。 _search=false&nd=1373722302667&rows=10&page=1&sidx=email&sord=desc 处理此问题可能容易出错,因为任何错位&和split()都会返回损坏的数据。 我使用UriInfo进行大部分工作,它会在MultiValuedMap或其他POST请求中提供查询参数,以json格式发送有效负载,然后将其解组为Map 。 如果POST数据属于application/x-www-form-urlencoded类型,那么我对如何做同样的建议。

JAXB XMLAdapter方法不会抛出exception

我正在使用JAXB XMLadapter来编组和解组布尔值。 应用程序的XML文件也将由C#应用程序访问。 我们必须validation此XML文件,这是使用XSD完成的。 C#应用程序为布尔节点写入“True”值。 但是我们的XSD也证实了这一点,因为它只允许“真/假”或“1/0”。 因此,我们在XSD中保留了String的布尔值,并且该字符串将由XMLAdaptervalidation,以便我们编组和解组。 XML Adapter如下: public class BooleanAdapter extends XmlAdapter { @Override public Boolean unmarshal(String v) throws Exception { if(v.equalsIgnoreCase(“true”) || v.equals(“1”)) { return true; } else if(v.equalsIgnoreCase(“false”) || v.equals(“0”)) { return false; } else { throw new Exception(“Boolean Value from XML File is Wrong.”); } } @Override public String marshal(Boolean […]

如何使用JAXB针对模式validationXML?

我正在使用XML和JAXB因为我正在解组并将XML编组为Java对象,反之亦然。 现在我试图根据我们的模式validation我们的XML(test.xsd)。 假设我的XML中缺少任何必需字段,那么我想知道在针对模式test.xsdvalidationXML之后缺少哪个字段。 public void unmarshal(final InputStream is) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader reader = factory.createXMLStreamReader(is); Object req = unmarshaller.unmarshal(reader); // how would I validate here? } 我如何根据test.xsd架构validation我的XML。 我的test.xsd架构路径是 – C:\工作空间\一个\ 2 \ 3 \ SRC \主\的java \ COM \包\ SERV \ AP \ VersionOne的\ test.xsd 更新:加载test.xsd为: Schema schema = factorySchema.newSchema(new File(“C:\\workspace\\one\\two\\three\\src\\main\\java\\com\\package\\serv\\ap\\versionOne\\test.xsd”));

JAXB unmarshaller.unmarshal何时返回JAXBElement 或MySchemaObject?

我有两个代码,在两个不同的java项目中,做了几乎相同的事情,(根据xsd文件解组web服务的输入)。 但在一种情况下我应该这样写:(输入是一个占位符名称)(元素是OMElement输入) ClassLoader clInput = input.ObjectFactory.class.getClassLoader(); JAXBContext jc = JAXBContext.newInstance(“input”, clInput); Unmarshaller unmarshaller = jc.createUnmarshaller(); Input input = (Input)unmarshaller.unmarshal( element.getXMLStreamReader() ); 在另一个lib中我必须使用JAXBElement.getValue(),因为它是一个返回的JAXBElement,一个简单的(Input)转换只是崩溃: Input input = (Input)unmarshaller.unmarshal( element.getXMLStreamReader() ).getValue(); 你知道是什么导致了这样的差异吗?

如果名称空间声明在SOAP信封上,如何使用JAXB解组SOAP响应?

如果已经删除了soap信封,则JAXB只能解组XML。 但是,我试图解组的SOAP响应在soap信封上有其名称空间声明。 如果我删除soap信封,名称空间声明也将被删除。 因此,标签的前缀将指无。 这会导致JAXB抛出错误。 如果在SOAP信封上声明名称空间,如何使用JAXB解组SOAP响应? 我需要解组的XML的类似示例如下: 123456789 如果我移除肥皂信封会发生这种情况: 123456789 如果我删除了soap信封,名称空间声明也将消失。 JAXB将无法解组上述xml,因为缺少前缀“ns”的命名空间定义。 因此,它将返回”The prefix “ns” for element “ns:getNumberResponse” is not bound.” 错误信息。 我如何解决它? 请注意我使用的是JDK 1.5。 我不确定在JDK 1.6中是否有办法解决这个问题。 我能够使用JAXB,因为我下载了使用JAXB所需的jar。

无法解组SOAP响应

我可以发送请求并收到响应,但我无法解析响应。 它返回以下错误: Local Name:Body error is here java.lang.NullPointerException at com.ticketmaster.ticketmaster.TicketMaster.Search(TicketMaster.java:119) at com.ticketmaster.ticketmaster.App.main(App.java:12) 码 SOAPMessage response = connection.call(message, endpoint); connection.close(); SOAPMessage sm = response; SOAPBody sb = response.getSOAPBody(); System.err.println(“Node Name:” + sb.getNodeName()); //return nothing System.err.println(“Local Name:” + sb.getLocalName()); //return Local Name:Body DOMSource source = new DOMSource(sb); results = (FindEventsResponse) JAXB.unmarshal(source, FindEventsResponse.class); System.err.println(“Results size: ” + this.results.returnTag.results.item.get(0).getName()); […]

JAXB:如何使JAXB NOT将空字符串解组为0

我有一个DTO类,其字段如下: @XmlAttribute @NotNull private Integer number = null; 我正在尝试解组xml等 … number=”” … 我需要nuber字段保持为null,以便抛出validationexception。 相反,JAXB将其解组为0.如何才能使其正常运行?

使用JAXB解组通用列表

我有一个返回此XML的服务: success id1 owner1 id2 owner2 要么 success id1 name1 id2 name2 我想使用这些类解组检索到的XML: 结果 : @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Response { @XmlElement protected String status; @XmlElementWrapper(name = “result”) @XmlElement protected List result; } 项目 : @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Project { @XmlElement public String id; @XmlElement public String owner; } 用户 : @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public […]

如何使用JAXB从服务返回的’anyType’创建java对象?

Web服务返回由WSDL定义的对象: 当我打印出这个对象的类信息时,它出现为: class com.sun.org.apache.xerces.internal.dom.ElementNSImpl 但我需要将此对象解组为以下类的对象: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = “”, propOrder = { “info”, “availability”, “rateDetails”, “reservation”, “cancellation”, “error” }) @XmlRootElement(name = “ArnResponse”) public class ArnResponse { } 我知道响应是正确的,因为我知道如何编组这个对象的XML: Marshaller m = jc.createMarshaller(); m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); m.marshal(rootResponse, System.out); 打印出来: 如何将我看到的ElementNSImpl对象转换为我知道它代表的ArnResponse对象? 此外,我正在AppEngine上运行,其中文件访问受到限制。 谢谢你的帮助 更新 : 我添加了@XmlAnyElement(lax=true)注释,如下所示: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = “”, propOrder = { “content” }) @XmlSeeAlso(ArnResponse.class) […]