Tag: xsd

wsimport两个声明导致冲突

我想在https://api.sendwordnow.com/webservices/v3/users.svc?wsdl上使用wsimport。 这是我正在使用的wsimport。 wsimport -B-XautoNameResolution -d C:\temp -extension -J-Djavax.xml.accessExternalSchema=all -J-Djavax.xml.accessExternalDTD=all -keep -verbose -XadditionalHeaders -Xnocompile https://api.sendwordnow.com/webservices/v3/users.svc?wsdl 这是错误。 解析WSDL … [WARNING] unknown extensibility element or attribute “EndpointReference” (in namespace “http://www.w3.org/2005/08/addressing”) line 1 of https://api.sendwordnow.com/webservices/v3/users.svc?wsdl [ERROR] Two declarations cause a collision in the ObjectFactory class. line 1 of https://api.sendwordnow.com/webservices/v3/Users.svc?xsd=xsd3 [ERROR] (Related to above error) This is the other declaration. […]

从Java类生成XML Schema(或相反)

我想为我的项目生成一些XML Schema。 我有一些Java类,像这样: package com.fortresswars.entity; import com.fortresswars.entity.properties.Armor; import com.jme3.scene.Spatial; public abstract class Object extends Thing { public Armor armor; public short hpMax; public boolean walkable = false; public short hpCurrent; public boolean alive; public Spatial object; public GameObject() { this.hpMax = hpMax; this.hpCurrent = hpMax; } public void setAlive(boolean alive) { this.alive = alive; } […]

使用模式按照模式重新排序XML文档的元素

假设我有一个XML文档(表示为文本,W3C DOM,无论如何),还有一个XML Schema。 XML文档具有模式定义的所有正确元素,但顺序错误。 如何使用模式“重新排序”文档中的元素以符合模式定义的顺序? 我知道这应该是可能的,可能使用XSOM ,因为JAXB XJC代码生成器使用元素的正确序列化顺序来注释其生成的类。 但是,我不熟悉XSOM API,它非常密集,所以我希望你们中的一个人对它有一些经验,并且可以指出我正确的方向。 像“在这个父元素中允许哪些子元素,以什么顺序?”之类的东西。 让我举个例子。 我有一个像这样的XML文档: 我有一个XML Schema,它说的内容必须是然后是 。 现在很清楚,如果我尝试根据模式validation文档,它会失败,因为和的顺序错误。 但我知道我的文档提前是“错误的”,所以我还没有使用模式进行validation。 但是,我知道我的文档具有模式定义的所有正确元素,只是顺序错误。 我想要做的是以编程方式检查Schema(可能使用XSOM – 这是XML Schema的对象模型),并询问它应该是什么内容 。 API将公开“您需要后跟 ”的信息。 所以我使用我的XML文档(使用DOM API)并相应地重新安排,以便现在文档将根据模式进行validation。 了解XSOM在这里很重要 – 它是一个java API,它表示XML Schema中包含的信息, 而不是我的实例文档中包含的信息。 我不想做的是从架构生成代码,因为架构在构建时是未知的。 此外,XSLT没有用,因为元素的正确排序仅由模式中包含的数据字典决定。 希望现在已经足够明确了。

Axis2 – 日期格式

脚本 由Axis2作为对Web服务客户端的响应输出的日期格式格式为“2009-08-28 + 01:00”。 我想将此更改为仅显示没有时区信息的日期(例如:“2009-08-28”) 组态 图书馆 轴2 1.4.1 WSDL ; 题 是否可以更改Axis 2用于写入日期信息的输出格式? 你能看到.NET客户重新转换这种日期格式有什么问题吗? 约束 遗憾的是,无法将“StartDate”元素更改为xsd:string或xsd:token 问题改进 因为我正在使用定义为的xsd:date XML数据类型 [-]CCYY-MM-DD[Z|(+|-)hh:mm] 因此,如果我设置 Calendar cal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getTimeZone(“UTC”); … 然后输出看起来像这样 2009-01-28Z 您可以将“UTC”替换为“GMT”或“”。 我可以摆脱“Z”吗?

为什么以及何时在JAXB中需要JAXBElement?

我只是在学习JAXB(用于XML绑定的Java体系结构)。 通过一些消息来源,我想到了JAXBElement一个疑问。 Oracle文档说: When XML element information can not be inferred by the derived Java representation of the XML content, a JAXBElement object is provided. This object has methods for getting and setting the object name and object value. 链接在这里 当Schema定义的数据类型和Java数据类型之间没有直接映射时,是否需要使用JAXBElement ? 此外,在下面列出的一个代码示例中。 我从这里跟随: ObjectFactory factory = new ObjectFactory(); UserT user = factory.createUserT(); user.setUserName(“Sanaulla”); ItemT […]

如何在Java中有效地使用SAXParseException

我正在validationJava中的XMLSchema,并且当我有无效的内容模型时会抛出SAXParseExceptions。 我将使用这些exception来突出validation失败的位置 – 但SAXParseExceptions似乎有点过低。 例如,对于枚举失败,我得到的有效性错误是所提供的值与一个例外中的内容模型不匹配,以及它在下一个例子中应用的元素。 我想我需要一个实用程序,它抽象一点将相关的错误合并在一起,并将exception文本解析为可用的exception属性。 这是一种合理的方法,还是我只是缺少某些东西,或者是图书馆或助手class? 更新@timgilbert,感谢您的回复。 例如,我在t’internet上发现了一个SAXParseException cvc-pattern-valid: Value ‘en’ is not facet-valid with respect to pattern ‘([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*’ 对我来说关键的事情是 此例外适用的元素’en’。 为什么我不能调用exception.getElement()或者其他东西,为什么不对有问题的元素进行XPath? 内存文档比行号和列号更有用! 这是模式validation失败。 为什么我不能得到类似可能类型的失败的枚举和对适当的失败的引用? validation失败的实际模式。 接下来会抛出另一个exception告诉我’en’元素的值导致我需要合并的问题 我希望能够做的一个例子就是让人们提交一份文件,并通过用户友好的消息突出显示validation失败的文件 – 上面的错误消息似乎不太友好……必须解析单引号只是感觉就像一场等待发生的事故:) 我想我可能做错了’reference-to-element’的事情,也许我应该默认将文档的身份转换作为validation的一部分,并使用我的validation错误属性来扩充转换可以用CSS挑选出来。 如果我需要解析消息以使它们更友好,那仍然无济于事…… Re:紧密绑定,javax.xml.validation.Validator.validate()抛出org.xml.sax.SAXException无论如何 – 不知道如何摆脱假设绑定… 干杯

minOccurs,nillable和限制的目的是什么?

所需文件说: 如果required()为true ,则Javabean属性将映射到具有minOccurs=”1″的XML模式元素声明。 对于单值属性, maxOccurs为”1″ ,对于多值属性, maxOccurs为”1″ “unbounded” 。 如果required()为false ,则Javabean属性将映射到XML Schema元素声明,其中minOccurs=”0″ 。 对于单值属性, maxOccurs为”1″ ,对于多值属性, maxOccurs为”1″ “unbounded” 。 nillable的文档说: 如果nillable()为true ,则JavaBean属性将映射到XML Schema nillable元素声明。 xs:complexType代码xs:complexType : public class WSData { //… @XmlElement(required = true, nillable = false) public void setMonth(XmlMonthType month) { this.month = month; } public void setUserLogin(String userLogin) { this.userLogin = userLogin; } […]

如何在针对XML模式validationXML文件时获取错误的行号

我正在尝试针对W3C XML SchemavalidationXML。 以下代码执行作业并报告何时发生错误。 但是我无法得到错误的行号。 它总是返回-1。 有没有简单的方法来获得行号? import java.io.File; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.w3c.dom.Document; import org.xml.sax.SAXParseException; public class XMLValidation { public static void main(String[] args) { try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = parser.parse(new File(“myxml.xml”)); SchemaFactory factory = […]

如何检查java类中是否有特定的方法?

我有一个xml架构(使用trang自动生成),它不断变化。 这些变化不是很精细。 仅从此架构中添加或删除一些元素。 从这个模式,我生成java类(使用cxf),我将通过它解组xml文档。 随着架构的变化,我自动生成的java类也会发生变化。 同样,与模式一样,java类中的更改也不是很大。 例如,如果一个元素说elemA被添加到模式中; 一些相关的函数说getElemA()和setElemA()被添加到自动生成的java类中。 现在,我如何确保这些自动生成的类中存在特定的函数? 一种解决方案是手写模式,以便覆盖xml的所有可能元素。 这就是我最终要做的。 但就目前而言,我还没有修复xml文件的格式。 更新: 有可能在自动生成的类中定义方法getElemA() 。 我无法控制这些类的自动生成。 但在我的主要课程中,如果有以下代码, If method getElemA exists then ElemA elemA = getElemA() 这段代码将永远存在于我的主类中。 如果在一个自动生成的类中生成方法getElemA() ,则没有问题。 但是如果没有生成这个方法,那么编译器会抱怨这个方法在任何类中都不存在。 有没有什么办法可以让编译器在编译时不要抱怨这个函数?

错误:“schemaLocation值***必须具有偶数个URI。”在spring调度程序的名称空间中

我得到了以下错误 org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 55; SchemaLocation: schemaLocation value = ‘http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx’ must have even number of URI’s. 我的调度程序servlet具有以下命名空间 我通过以下方式取代了以上所有内容 我的错误消失了。 怎么会发生任何一个人说?