我被卡住了:我在代码中没有看到错误,但每次我反序列化XML时都会得到一个ValueRequiredException
:
无法满足@org.simpleframework.xml.属性(空=,名称=epc_memory,必需=true)字段epcMemory保护字节[]de.sysvision.aviocheck.xml.generated.Object.epc内存类de.sysvision.aviocheck.xml.generated.对象在第14行
我正在使用这个XML:
<?xml version="1.0" encoding="utf-8" ?>
<avio_check_inventory_data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="AvioCheckInventoryData.xsd"
version="2.0">
<avio_check_meta_data>
<original_timestamp>20130412152652000</original_timestamp>
<last_changed_timestamp>20130412152652000</last_changed_timestamp>
<content_type>master</content_type>
<ac_reg>D-AGWA</ac_reg>
</avio_check_meta_data>
<avio_check_payload>
<object epc_memory="3B3A00F1C30E008F4550430C30C30C40">
<type>LV</type>
<type_id>PAX</type_id>
<layer> <id>1</id> <region_id>A1</region_id> </layer>
<layer> <id>2</id> <region_id>A1</region_id> </layer>
<property id="MFR">78673</property>
<property id="PNO">S51150-6300</property>
<property id="DMF">20111101</property>
<property id="EXP">20161101</property>
<property id="LAC">1001A</property>
</object>
</avio_check_payload>
</avio_check_inventory_data>
这是我的简单XML对象类:
@Root(name = "object")
public class Object
{
@Attribute(required = false)
protected String noNamespaceSchemaLocation;
@Element(required = true)
protected String type;
@Element(name = "type_id", required = true)
protected String typeId;
protected List<Layer> layer;
protected List<Property> property;
@Attribute(name = "epc_memory", required = true)
protected byte[] epcMemory;
public String getType() {
return type;
}
public void setType(String value) {
this.type = value;
}
public String getTypeId() {
return typeId;
}
public void setTypeId(String value) {
this.typeId = value;
}
public List<Layer> getLayer() {
if (layer == null) {
layer = new ArrayList<Layer>();
}
return this.layer;
}
public List<Property> getProperty() {
if (property == null) {
property = new ArrayList<Property>();
}
return this.property;
}
public byte[] getEpcMemory() {
return epcMemory;
}
public void setEpcMemory(byte[] value) {
this.epcMemory = ((byte[]) value);
}
}
如果我从epcMemory设置"必需"为false,那么这个工作!新的例外是:
无法满足@org.simpleframework.xml.元素(data=false,name=,必需=true,type=false)字段类型保护java.lang.字符串de.sysvision.aviocheck.xml.generated.Object.type类de.sysvision.aviocheck.xml.generated.对象在第14行
有人能帮我看看我做错了什么吗?
这是对应的XML架构:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:simpleType name="DateTimeYYYYMMDDHHMMSSmmm">
<xs:restriction base="xs:string">
<xs:pattern value="\d{17}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="content_type">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="master"/>
<xs:pattern value="update"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:element name="avio_check_inventory_data">
<xs:complexType>
<xs:sequence>
<xs:element name="avio_check_meta_data" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="original_timestamp" type="DateTimeYYYYMMDDHHMMSSmmm" minOccurs="1" maxOccurs="1" />
<xs:element name="last_changed_timestamp" type="DateTimeYYYYMMDDHHMMSSmmm" minOccurs="0" maxOccurs="1"/>
<xs:element name="content_type" type="content_type" minOccurs="1" maxOccurs="1"/>
<xs:element name="ac_reg" type="xs:string" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="avio_check_payload" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="object" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="type_id" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="layer" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="region_id" type="xs:string" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
This is the same id as in used layout.xml!
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="epc_memory" type="xs:hexBinary" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="version" type="xs:decimal" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
答案很简单:我必须使用inline=true的ElementList注释
@ElementList(inline=true)
package de.sysvision.aviocheck.xml.generated;
import java.util.List;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
@Root(strict = false)
public class Object
{
@Attribute(name = "epc_memory")
private String epcMemory;
@Element(required = false)
private String type;
@Element(name = "type_id")
private String typeId;
@ElementList(inline = true)
private List<Layer> layers;
@ElementList(inline = true)
private List<Property> properties;
public String getEpcMemory() {
return epcMemory;
}
public void setEpcMemory(String epcMemory) {
this.epcMemory = epcMemory;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTypeId() {
return typeId;
}
public void setTypeId(String typeId) {
this.typeId = typeId;
}
public List<Layer> getLayers() {
return layers;
}
public void setLayers(List<Layer> layers) {
this.layers = layers;
}
public List<Property> getProperties() {
return properties;
}
public void setProperties(List<Property> properties) {
this.properties = properties;
}
}
变量命名 在《初识永远强大的函数》一文中,有一节专门讨论“取名字的学问”,就是有关变量名称的问题,本着温故而知新的原则,这里要复习: 名称格式:(下划线或者字母)+(任意数目的字母,数字或下划线) 注意: 区分大小写 禁止使用保留字 遵循通常习惯 以单一下划线开头的变量名(_X)不会被from module import *语句导入的。 前后有下划线的变量名(X)是系统定义的变量名,对解释器有特殊
简单的 TableView demo,在UITableViewCell上添加图像、文字、以及tableView Style,点击 cell 链接到英雄详细资料(联网)。适合初学者下载学习iOS 列表编程。 [Code4App.com]
温馨提示:项目已停止维护。 主要修改: 1)增加文章模块,文章列表显示在首页和单品页中; 2)增加店铺模块,店铺显示在首页和瀑布流页中; 3)增加网站地图模块; 4)增加sitemap模块; 5)增加第三方淘宝登录功能; 6)增加专辑封面功能; 7)整合UC用户系统; 8)修改用户注册登录名对汉字的验证规则; 9)修改分享描述为宝贝详情,且展示在商品标签下方; 10)修改焦点图展示规则; 11)修
我在谷歌上搜索过StackOverflow,我阅读过示例和教程,我浏览过Spring JavaDocs和其他文档。我尝试了很多不同的排列。 无论我尝试什么,我都会得到相同或类似的错误,只改变它抱怨不提供的参数: Java代码: 存储过程SQLServer 2012(v 11)sys.sp_sequence_get_range(): https://msdn.microsoft.com/en-us/
1、宽度或者高度限制 minWidth、minHeight、maxWidth以及maxHeight选项允许你设置选区的范围。在这个例子中,图像的最大范围将限制为200x150px。 $(document).ready(function () { $('#ladybug_ant').imgAreaSelect({ maxWidth: 200, maxHeight: 150, handles:
MQ 简单队列实战 [ ] 模型: >[danger] P 是我们的生产者 > 中间的框是一个队列,代表消费者保留的消息缓冲区。 > C 是我们的消费者 代码演示: 'use strict'; const Controller = require('egg').Controller; /** * 一对一队列演示 */ // 频道名称 const queueName = 'hasone' c