草庐IT

java - 使用 JAXB 解析基于属性的 xml

我正在使用JAXB来解析一些xml。AustraliaAustralien如果我在我的类(class)国家使用@XmlElement(name="Name",required=true)protectedListname;一切正常。但是我只想获得language="en"的属性所以我在我的国家课上有protectedStringname不是集合。有没有什么好的方法可以通过一些注释来解决这个问题? 最佳答案 注意:我是EclipseLinkJAXB(MOXy)JAXB(JSR-222)的领导和成员专家组以下是处理此用例的两种方法。第一

java - 如何将运行时数据注入(inject)使用 JAXB 解析 XML 时创建的对象

我必须解析一个复杂的XML文档。我的模型中的一些类实现接口(interface)HasDate:interfaceHasDate{publicvoidsetDate(Datedate);}创建unmarshaller的日期是已知的://hereIknowthedate.JAXBContextctx=JAXBContext.newInstance("com.mycompany.mymodel");Unmarshallerunmarshaller=ctx.createUnmarshaller();unmarshaller.unmarshal(input);我想在JAXB解析文档时为实现Ha

java - 使用 JaXB 进行最简单的验证

我想用JaXB验证xml文档。代码:SchemaFactoryfactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);Schemaschema=factory.newSchema(newStreamSource(newFile("D:/liferay-develop/workspace/cat_test/v2/STD_MP.xsd")));UnmarshallerjaxbUnmarshaller=jaxbContext.createUnmarshaller();jaxbUnmarshaller.setS

java - 在解码操作期间将 nil ="true"转换为 null

我从服务器接收XML,其架构几乎将每个元素都指定为:我试图找到一种干净的方法,将我收到的每个标记为xsi:nil="true"的元素在解码为JAXB对象时转换为null。所以像这样:应该导致我的JAXB对象具有一个值为null的myIntElementName属性,而不是一个具有nil属性设置为true的JAXBElement对象(或任何沿着那些线)。我无法控制向我发送使用nillable属性的XML的系统,因此我需要在收到它时在我这边进行转换。 最佳答案 @XmlElement(nillable=true)您只需在您的字段/属性上

java - JAXB - 类集合的 PascalCase 包装器

我正在使用JAXB编写JAX-RS来编码(marshal)我的对象。我有一个简单的对象,NameValuePair我想用PascalCase发送。一切正常,除了它被包裹在驼峰包装器中,.这是我的课:@XmlRootElement(name="NameValuePair")publicclassNameValuePairimplementsSerializable{privateStringname=null;privateStringvalue=null;publicNameValuePair(Stringname,Stringvalue){this.name=name;this.va

java - 多类型List注解翻译: JAXB to SimpleXML

我正在尝试将一些JAXBxjc.exe生成的类转换为简单XML类。我不确定如何注释动态元素。例如,在架构中,我有:当通过xjc.exe运行时,为@XmlElement生成以下注释@XmlElements({@XmlElement(name="HostQueryRq",type=HostQueryRqType.class),@XmlElement(name="CompanyQueryRq",type=CompanyQueryRqType.class),@XmlElement(name="CompanyActivityQueryRq",type=CompanyActivityQueryRq

java - 如何将 JAXB 对象编码到不同的模式?

我解码一个特定格式的XML,例如在使用Java对象之后,我想将它发送到另一个使用不同模式的服务,例如这可以通过JAXB“轻松”完成吗? 最佳答案 使用任何JAXB(JSR-222)您可以在JAXBSource和javax.xml.transformAPI上使用XSLT来生成二级XML结构:JAXBContextjc=JAXBContext.newInstance(Foo.class);//OutputXMLconformingtofirstXMLSchemaMarshallermarshaller=jc.createMarshall

java - 如何告诉 JAXB 在运行时序列化哪些字段?

我想根据请求和用户有选择地序列化字段。例如,将向管理员用户提供带有一些附加字段的XML。而普通用户会得到没有这些字段的XML。其次,目前我使用@XmlIDREF来防止引用对象或集合的不必要扩展。但有时用户可能需要这些详细信息。对引用的对象进行第二次请求是不可取的。我想让用户告诉服务器应该扩展XYZ属性(即包括完整的对象而不仅仅是它的引用)给定一个用户和一个请求,我可以根据业务逻辑判断哪些字段应该被序列化。现在如何将此信息传达给JAXB?我尽可能不想创建XSD。请注意,请求参数是动态的。序列化哪些字段是在运行时决定的。所以我不能使用必须硬编码的东西——比如@Transient或@XmlI

java - JAXB Unmarshaller - 意外的元素异常

我使用JAXB解析器将通过http请求发送的XML转换为Java对象,同时根据我的XSD模式对其进行验证。问题是当调用unmarshal()方法时会引发此异常:javax.xml.bind.UnmarshalException:unexpectedelement(uri:"http://www.somedomain.com/",local:"assign").Expectedelementsare(none)如果我从我的根XML元素中删除命名空间,它会引发相同的异常,其中uri部分为空:javax.xml.bind.UnmarshalException:unexpectedelemen

java - JAXB 拆分单个属性并绑定(bind)到多个字段

有没有办法使用JAXB将单个属性解码/拆分为多个字段?我在XML文件中有一个元素具有时间属性(无法更改XML文件)。时间属性的精度为微秒。因此我无法将该属性存储在javaDate或JodaDateTime字段中。我想将该属性存储在一个简单的自定义DateTime类中,其中亚秒存储在Integer中,其余部分存储在javaDate中(我无权访问Joda)。但是,我一直无法弄清楚如何将单个属性解码为日期和整数。XML示例:简单的自定义DateTime类:publicclassDateTime{Datedate;Integersubseconds;publicDategetDate(){re