Tag: xsd

JAXB使用fractionDigits对BigDecimal进行编组

所以这是我的问题。 我给了一个我生成的XML文件应符合的XSD。 使用org.apache.cxf.cxf-xjc-plugin maven插件和外部绑定文件生成源代码。 但是当我在尝试编组我的对象时,生成的XML不符合我的要求。 我的XSD包含以下内容: … 生成的XML片段如下所示: 109.5 … 10.25 虽然我期待它是: 109.50 … 10.25000 有没有办法以干净的方式解决这个问题? 我不想为每个totalDigits , fractionDigits组合编写几个适配器。 由于XSD可能会发生变化,因此我希望保持生成的源代码不变。

DOM解析器错误的childNodes计数

这很奇怪,但让我尽力把它放在一边。 我有一个XML,我正在通过桌面的正常方式阅读并通过DOM解析器解析它。 0 abc App abc Wallet 11 Ss22 Adding New cake 读取XML以获取孩子。 Document doc = docBuilder.parse(“C://Users//Desktop//abc.xml”); Node root = doc.getElementsByTagName(“Abase”).item(0); NodeList listOfNodes = root.getChildNodes(); //Sysout Prints 13 所以这里我的逻辑运行良好。当我尝试通过将相同的XML推送到队列并读取它并获取子节点时,它给了我没有。 子节点数为6。 Document doc=docBuilder.parse(new InputSource(new ByteArrayInputStream(msg.getBytes(“UTF-8”)))); Node root = doc.getElementsByTagName(“Abase”).item(0); NodeList listOfNodes = root.getChildNodes(); //Sysout Prints 6 这搞砸了我解析XML的逻辑。任何人都可以帮助我吗? UPDATE 添加发送逻辑: javax.jms.TextMessage tmsg = session.createTextMessage(); tmsg.setText(inp); sender.send(tmsg); 问题如果我从桌面读取这个xml它会说13个孩子,6个元素节点和7个文本节点。通用逻辑是: […]

jaxb不生成带有基本整数的枚举

我有以下xsd: JAX-B什么都不做,没有错误,没有警告只是不生成这个类。 如果从xs:integer更改为xs:string则可以。 但我需要完全整数值。 我用maven生成类: org.codehaus.mojo jaxb2-maven-plugin 1.3 AuthGateway xjc 问题2. JAX-B和IDE(IDEA)不允许在id attrribute中使用空格。 为什么? – 好的 – 不行 这是正确的行为吗?

JAXB Bean生成

我正在使用JAXB在Maven中使用JAXB插件从XSD生成bean。 这工作正常,期望代码包含每个字段的isSetXXXXXX()方法。 例如 对于字段firstName ,它产生以下代码: @XmlElement(name = “FirstName”, required = true) protected String firstName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.token = firstName; } public boolean isSetFirstName() { return (this.firstName!= null); } 这个isSetFirstName()方法导致了问题,我不希望JAXB生成这些问题。 有没有办法阻止这种行为? 谢谢。 UPDATE 解决了这个问题:问题出在xjb文件中,generateIsSetMethod设置为true。 bindingStyle=”modelGroupBinding” choiceContentProperty=”true” > 这也回答了我之前的问题 。

XML Schemavalidation错误

我有我的xml文件 123 qwe qwe qwe qwe 2012 1234 1234 1234 122 Pan : MobileNo : TotalAmount : FgbIIimTLIbd0Zpvq1zDrZse6aJg5bAE1/Q58cEkEvk= dy4QDco5NhXResncu0tUG5ylujDn9siIQSHjuX5HxH2gs70LpsO3KDWNvDXjpgkIySYfzJ/FdC6C trkSySWRjhObqI8cbcP5VU/nL8pP21+3CO+gF1k884aeX3felpRy0FBBMTYBknQTunWCHvpHk927 ZHGvm6Hiej7iBKr3e1k= 我的此xml文件的架构文件如下( c1.xsd ) c2.xsd(编辑) 当我validation我的xml文件时,我得到以下exception org.xml.sax.SAXParseException; systemId: file:/C://xml//c2.xsd; lineNumber: 22; columnNumber: 37; s4s-elt-invalid-content.1: The content of ‘#AnonType_Reference SignedInfoSignature’ is invalid. Element ‘element’ is invalid, misplaced, or oc curs too often. 我无法弄清楚我哪里出错了? 谁能告诉我代码中的错误到底在哪里? 编辑1后出错 org.xml.sax.SAXParseException; […]

现在已经退役的是什么而不是XMLBeans?

我正在开始一个新项目,我有第三方XSD。 我的Java应用程序需要生成符合此XSD的XML消息,并读取符合此XSD的传入XML消息。 在过去,我使用了Apache XMLBeans( http://xmlbeans.apache.org/ )。 看起来XMLBeans已经退役了。 现在已经退役的XMLBeans有什么好的替代品? 我在其他项目中使用了XStream,但我不记得XStream能够从XSD生成Java类,所以我认为对于这个用例,它不是XMLBeans的好选择。 我在XSD中定义了数百种类型,并且非常希望不必创建数百个Java类来手动用Java表示它们。 换句话说,使用此处给出的XStream示例: http : //x-stream.github.io/tutorial.html ,我在XSD中定义了Person类型(以及其他99个)。 使用XMLBeans我可以生成Java类来表示这些对象但是使用XStream我需要手动或使用其他工具来创建Java类(例如Person)。 在这种情况下我应该使用什么工具? 任何帮助将不胜感激。 谢谢,约翰

JAXB 2.1 – 自定义xs:任何绑定

我想使用JAXB 2.1 XJC从xsd生成java代码。 我提供了xsd架构,我无法更改它。 我想在从xml架构生成java类时使用xjc:simple模式。 在xsd中有元素: 正如在此处所述: http : //jaxb.java.net/guide/Mapping_of__xs_any___.html我希望这些元素绑定到: @XmlAnyElement(lax=true) public Object any; 但是当我使用简单的绑定模式xjc时:简单的我有: @XmlAnyElement protected Element any; 我试图找到一个解决方法,但到处都说xs:any是在没有配置的情况下处理的。 拥有xs的唯一方法:将任何元素作为java.lang.Object放弃xjc:simple或在xsd 中将processContents更改为“strict” 。 这些选项现在对我来说都不可接受,因为我无法更改xml架构,并且我有一些依赖于使用xjc生成的java类的遗留代码:简单模式但现在我需要使用xs:any element而我想避免使用org.w3c.dom.Element对象。 任何帮助将非常感激。 谢谢。

JAXB @XmlElements使minOccurs = 1

所以我希望有一个列表用@XmlElements注释,如下所示 @XmlElements( { @XmlElement(name = “Apple”, type = Apple.class), @XmlElement(name = “Orange”, type = Orange.class), @XmlElement(name = “Mango”, type = Mango.class) } ) public List getEntries() { return fruitList; } 我想知道是否有办法强制列表包含至少1个元素,因为现在,xsd看起来像

JAXBContext.newInstance变体

我正在尝试JAXBContext类中的各种forms的newInstance方法(我使用的是Oracle JDK 1.7附带的默认Sun JAXB实现)。 我不清楚只需将具体类与ObjectFactory类传递给newInstance方法即可。 我应该注意到,我正在使用JAXB纯粹用于解析XML文件,即仅在XML-> Java方向。 这是展示我观点的绝对最小代码: xsd文件 鉴于上述XSD,以下JAXBInstance.newInstance调用成功创建了一个可解析样本a.xml文件的上下文: jc = JAXBContext.newInstance(“example.a”); jc = JAXBContext.newInstance(example.a.ObjectFactory.class); jc = JAXBContext.newInstance(example.a.RootType.class,example.a.ObjectFactory.class); 但是,单独传递example.a.RootType.class会在运行时失败并出现javax.xml.bind.UnmarshalException : jc = JAXBContext.newInstance(example.a.RootType.class); // this fails at runtime. 任何人都能解释一下吗? 我正在试验这些JAXBContext :: newInstance变体的原因是我偶然发现了这个问题 ,其中接受的答案包括“基于个别类而不是对象工厂构建JAXB上下文”的选项。 我正在使用的示例a.xml和JAXB Java代码在post的末尾。 示例使用了a.xml foo JAXB解析代码 public static void main (String args[]) throws JAXBException, FileNotFoundException { JAXBContext jc = null; message(“using package […]

如何告诉JAXB元素的顺序无关紧要?

是否可以告诉JAXB忽略元素的顺序? 那么生成XSD将包含all元素而不是sequence元素?