- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 XML 架构:
<xsd:element name="Person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
<xsd:element name="lat" type="xsd:double" minOccurs="0"/>
<xsd:element name="lon" type="xsd:double" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
我有一条 XML 消息:
<Person>
<name>Fred</name>
</Person>
我使用 JAXB 自动生成我的类(即 Person.java 等)。
因此,在运行时,我使用 JAXB 来解码上述 XML 消息并获取 Person 对象实例。当我做p.getLat()
时或p.getLon()
即使原始 XML 不包含 <lat>
,返回值也是 0.0或<lon>
元素。
更糟糕的是 0.0,0.0 是有效的纬度和经度。很少有人在那里,但这不是重点!
安article IBM 站点上建议使用附加 XML 元素作为元数据来明确说明可选元素是否存在。即
<xsd:element name="hasLat" type="xsd:boolean"/>
<xsd:element name="hasLon" type="xsd:boolean"/>
因此上面的 XML 消息将变为:
<Person>
<name>Fred</name>
<hasLat>false</hasLat>
<hasLon>false</hasLon>
</Person>
这看起来是一个丑陋的黑客行为。 JAXB 必须有一种正确的方法来检查该元素是否存在,以便我可以信任来 self 的 getLat()
的返回值。 , getLon()
?
最佳答案
我根本没有看到这个问题。对我来说xjc
生成 Person
具有属性 lat
的类和lon
类型 Double
.
如果我解码一个没有 <lat>
的 XML 文件或<lon>
元素,然后得到 Person
对象有 null
正如我所期望的那样,这些属性的值。
我不知道你是怎么得到0.0
的任何地方。
我的 XML 架构:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/person">
<xsd:element name="Person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
<xsd:element name="lat" type="xsd:double" minOccurs="0"/>
<xsd:element name="lon" type="xsd:double" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我的Test.java
:
import com.example.person.Person;
import javax.xml.bind.JAXB;
import java.io.File;
public class Test {
public static void main(String[] args) {
Person p = JAXB.unmarshal(new File("foo.xml"), Person.class);
System.out.println(p.getName());
System.out.println(p.getLat());
System.out.println(p.getLon());
}
}
我的foo.xml
:
<Person>
<name>Fred</name>
<lat>1.0</lat>
</Person>
输出:
Fred1.0null
关于java - JAXB minOccurs=0。元素存在还是不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1806098/
我有以下架构:(摘录)
我正在构建我的 svcutil 命令行以从 OSEO schema 生成业务对象. 每当它告诉我缺少“xxx”类型时,我都会确定我需要将什么 xsd 添加到命令行并添加它。到目前为止,我的命令行如下所
这个问题已经有答案了: XML Schema minOccurs / maxOccurs default values (3 个回答) 已关闭 3 年前。 当我们在 WSDL 声明中不声明任何 min
我正在使用 Apache CXF 进行 Web 服务开发。我们写好了Java代码,WSDL会由CXF引擎自动生成 我有一个名为 xmlMessage 的 String 必须将 minoccurs 设置
我使用的是apache cxf 3.1.8,wsdl是由cxf引擎自动生成的。我想为字段 ProductId 设置 minOccurs 和 maxOccurs,如下所示: 预计: 实际: 换句话
当我运行我的代码时,它给了我这个错误 [ s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'.]
在下面的这个例子中,
鉴于此 XML 模式片段: 预期结果有效元素可能包含 0 个或多个 元
我们将 CXF 框架与 aegis 映射器一起用于 java 服务器和 .NET 客户端。默认情况下,WSDL 类中的所有变量的 minOccurs=0。我们在 CXF 配置中使用这样的设置来防止它:
我有一个 XML 架构: 我有一条 XML 消息: Fred 我使用 JAXB 自动生成我的类(即 Person.java 等)。 因此,在运行时
我想知道 XML 模式规范如何处理这些情况: 没有给出 maxOccurs -> 这是基数 [1..1] 吗? 我想这简直是无效的? 这是基数 [0..2] 还是 [1..2]? 是否有关于 X
我有一个简单的架构,我将 minOccurs 和 maxOccurs 都声明为 1。当我运行 XSD.exe 以生成 C# 类并在代码中使用该类时;该字段未强制执行。是否缺少一些额外的步骤?还是使用
我无法理解以下 XML 模式的行为: 我预计这两个元素中
我正在构建一个 ASP.NET Web 服务。 我的代码定义如下,但我不知道如何通过 wsdl 指定 FirstName 和 LastName 属性的 minOccurs。我要那些按要求,不能为空。是
我正在使用 svcutil 从 Web 服务生成客户端代理。WSDL 包含属性 minOccurs 设置为 0 的元素 然而,生成的 DataContract 完全忽略了这个属性,只是创建了一个没有
我正在尝试使用 EclipseLink MOXy 2.1.2 和 Java 1.6 生成基于我的域类的模式,遵循以下示例:http://wiki.eclipse.org/EclipseLink/Exa
我遇到了一个遗留的 XSD,它有一堆像...... ...其中 minOccurs 和 maxOccurrs 都等于 1,并且有一个默认值。由于 XML 文档无论如何都需要包含一些值,因
如何使用 XSOM 解析器从元素中获取 minOccurs 属性?我看过这个获取与复杂类型相关的属性的示例: private void getAttributes(XSComplexType xsCo
所以我想要一个像下面这样用@XmlElements 注释的列表 @XmlElements( { @XmlElement(name = "Apple", type
我正在为 Web 服务的客户端编写代码。在 Web 服务定义文件中,定义了“minOccurs”和默认值。我如何访问这些 minOccurs 和默认值? 在 WSDL 文件中,元素定义如下: 其中 o
我是一名优秀的程序员,十分优秀!