草庐IT

xml - 使用 XPath 选择节点以使用 JAXB 绑定(bind)类的子集

简化问题:选择具有以字符串“Notification”结尾的属性的所有XML节点的XPath是什么?此代码段中的第一个和第三个节点:详细问题:我想从xsd架构中选择多个complexTypes以与JAXB绑定(bind)。这适用于单个类:OrderStateChangeNotificationcom.google.checkout.sdk.notifications.Notification这是架构架构文件中的相关片段:我希望绑定(bind)应用于所有通知对象。它们都以“通知”结尾我试过更改XPath从//xs:complexType[@name='OrderStateChangeNo

xml - JAXB xjc 映射到现有域对象

我进行了大量搜索,但找不到一个简洁的示例来说明如何将XML架构映射到现有域对象,而不是使用xjc创建全新的域对象。我已经创建了一个绑定(bind)(xjb)文件,但仍然找不到完成此操作的方法。如果我有一个我希望JAXB使用的现有域对象,如下所示:packagecom.blah.domain;classCustomerOffice{privateintid;privateStringname;privateStringphone;}我有一个如下所示的XML模式:如果我使用xjc生成JAXB类,它将创建一个名为Customer的新类(这是我想要的)。它还将创建一个名为CustomerOff

xml - JAXB:如何在没有 namespace 的情况下解码 XML

我有一个XML文件:thetypetrue我想将它解码为下面类的一个对象@XmlRootElement(name="object")publicclassSpec{publicStringstr;publicObjectbool;}我该怎么做?除非我指定命名空间(见下文),否则它不起作用。thetypetrue 最佳答案 更简单的方法可能是使用unmarshalByDeclaredType,因为您已经知道要解码的类型。通过使用Unmarshaller.unmarshal(rootNode,MyType.class);您不需要在XML

xml - 使用 JAXB 验证模式

我一直在寻找解决这个问题的方法太久了,考虑到它听起来很简单,所以我来寻求帮助。我有一个XML架构,我已将其与xjc一起使用来创建我的JAXB绑定(bind)。当XML格式正确时,这会很好地工作。不幸的是,当XML格式不正确时,它也不会提示。当我尝试解码XML文件时,我无法弄清楚如何针对模式进行正确的完整验证。我已经设法使用ValidationEventCollector来处理事件,它适用于XML解析错误,例如不匹配的标签,但在需要标签但完全不存在时不会引发任何事件。据我所知,可以针对模式进行验证,但您必须知道模式的路径才能将其传递给setSchema()方法。我遇到的问题是模式的路径存

xml - 让 JAXB 运行得更快

我有一个8兆的文件。使用JAXB编码需要1082毫秒,使用DOM需要862毫秒,使用SAX需要438毫秒。这是使用JDK1.6的所有默认设置,没有使用额外的配置,例如使用woodstox。为了从JAXB获得更好的性能,我尝试通过以下方式使其使用SAX解析...FileReaderfr=newFileReader("myfile.xml");JAXBContextjc=JAXBContext.newInstance(MyObjectList.class);Unmarshallerunmarshaller=jc.createUnmarshaller();XMLInputFactoryxml

xml - cvc-complex-type.2.4.a : invalid content was found starting with element 'ProcessDesc' . ProcessName 预期之一

我正在通过Validator类验证我的jaxb对象。下面是我用来验证jaxb对象的代码。但是在验证它时我收到了这个错误。jc=JAXBContext.newInstance(obj.getClass());source=newJAXBSource(jc,obj);Schemaschema=schemaInjector.getSchema();Validatorvalidator=schema.newValidator();validator.validate(source);错误(SAXParseException):cvc-complex-type.2.4.a:发现以元素“Proce

java - 如何在一个 java 应用程序中处理不同版本的 xsd 文件?

事实在我的java应用程序中,我必须同时处理具有不同架构版本(xsd文件)的XML文件。XML文件的内容在不同版本之间只发生了一点变化,所以我想主要使用相同的代码来处理它,只是根据所用模式的版本做一些案例区分。当前解决方案现在我正在使用SAX解析器和我自己的ContentHandler解析XML文件,忽略模式版本,只检查是否存在我需要处理的标签。可能的选择我真的很想使用JAXB来生成用于解析XML文件的类。这样我就可以从我的Java代码中删除所有硬编码的字符串(常量)并改为处理生成的类。问题如何使用JAXB以统一的方式处理不同的模式版本?有更好的解决方案吗?进度我将模式版本编译为不同的

xml - Java JaxB - 对象到 XML 字符串到对象

我在Netbeans7.1.2中使用JaxB时遇到问题。我已经使用JaxB(新JaxB绑定(bind))从模式自动生成了我的类。我正在创建将使用Marshaller序列化为XML字符串的对象,然后从XML字符串返回到新的对象实例。但是,我得到以下异常:javax.xml.bind.UnmarshalException:unexpectedelement(uri:"http://www.somewhere.com/some/path",local:"MyQueryComplexTypeQuery").Expectedelementsare(none)XML字符串的编码/序列化工作正常。导

xml - JAXB Unmarshal 创建了一个空对象

我正在使用JAXB将XML文件解码为对象树。根对象是非空的,但它的所有成员都是空的,即使XML文件中有数据也是如此。我的对象类是使用来自wsdls的Axis2生成的。我有ObjectFactory类、jaxb.in​​dex类、package.info注释等。我的问题和这个讨论一样:http://old.nabble.com/AXIS2,-JAXB---Unmarshalling-td26847419.html首先也是最重要的:有没有办法让它正确填充数据?如果没有,是否有一个很好的Axis2或JAXB替代库,它们可以做同样的事情,但可以很好地相互配合? 最佳

xml - 如何将 xml 属性添加到 jaxb 注释类 XmlElementWrapper?

我有一个带有XmlElementWrapper注释的类,例如:...@XmlElementWrapper(name="myList")@XmlElements({@XmlElement(name="myElement")})privateListsomeList=newLinkedList();...此代码生成类似的XML到目前为止还不错。但是现在我需要给列表标签添加属性来获取类似XML的是否有一种“无需创建包含表示列表的新类即可实现此目的的智能方法?” 最佳答案 我为您的问题找到了更好的解决方案。要制作XmlJava对象,请使用以