- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有课
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "customerOrder", propOrder = {
"demandsUuid",
"invoicesOutUuid",
"paymentsUuid",
"customerOrderPosition",
"purchaseOrdersUuid"
})
public class CustomerOrder extends LegendEntity {
@XmlAttribute(name = "sourceAgentUuid")
@XmlIDREF
@XmlSchemaType(name = "IDREF")
@XmlJavaTypeAdapter(XmlAdapterTest.class)
protected Object sourceAgentUuid;
....
还有 sourceAgentUuid 字段的代理类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "agent", propOrder = {
"attribute",
"requisite",
"contact",
"contactPerson",
"agentNewsItem",
"tags"
})
@XmlSeeAlso({
Company.class
})
public class Agent
extends LegendEntity
{
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String uuid;
并解码 xml 片段
<?xml version="1.0" encoding="UTF-8"?>
<customerOrder deliveryPlannedMoment="2014-04-23T16:10:00+04:00" reservedSum="0.0" stateUuid="44b3fca5-a2b3-11e3-31b2-002590a28eca" targetAgentUuid="9a3c7d6b-4245-11e3-24c6-7054d21a8d1e"
sourceAgentUuid="ef0b03de-c95b-11e3-9183-002590a28eca" sourceStoreUuid="b05ed064-8743-11e3-0c1a-002590a28eca"
applicable="true" moment="2014-04-21T17:50:00+04:00" payerVat="true" rate="1.0" vatIncluded="true" created="2014-04-21T17:50:44.142+04:00" createdBy="it@erms" name="440" updated="2014-04-22T12:19:56.472+04:00" updatedBy="it@erms" readMode="SELF" changeMode="NONE">
<accountUuid>5f65cc9e-3708-11e3-bf9a-7054d21a8d1e</accountUuid>
<accountId>5f65cc9e-3708-11e3-bf9a-7054d21a8d1e</accountId>
<uuid>ef1267b8-c95b-11e3-aeb4-002590a28eca</uuid>
<groupUuid>9a3ad96b-4245-11e3-010e-7054d21a8d1e</groupUuid>
<groupId>9a3ad96b-4245-11e3-010e-7054d21a8d1e</groupId>
<code>440</code>
<externalcode>440</externalcode>
当我尝试解码时
JAXBElement poe = (JAXBElement)u.unmarshal( new FileInputStream( "org_order.xml" ) );
CustomerOrder co=(CustomerOrder)poe.getValue();
System.out.println(co.getSourceAgentUuid());
结果为空(但所有其他非 @XmlIDREF 字段均已解码)
如何获得 ef0b03de-c95b-11e3-9183-002590a28eca 结果?
我简单地创建了测试类。为什么输出为空?
import java.io.ByteArrayInputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlIDREF;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
public class TestMarshall {
public static void main(String[] args) {
try {
// marshal();
unmarshal();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void marshal() throws Exception {
CustomerOrder co = new CustomerOrder();
Agent a = new Agent();
a.setUuid("sdfsdf");
co.setSourceAgentUuid(a);
JAXBContext jc = JAXBContext.newInstance(CustomerOrder.class,
Agent.class);
Marshaller m = jc.createMarshaller();
m.marshal(co, System.out);
}
public static void unmarshal() throws Exception {
JAXBContext jc = JAXBContext.newInstance(CustomerOrder.class,
Agent.class);
Unmarshaller u = jc.createUnmarshaller();
String testXML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><customerOrder sourceAgentUuid=\"sdfsdf\"/>";
CustomerOrder poe = (CustomerOrder) u
.unmarshal(new ByteArrayInputStream(testXML.getBytes()));
CustomerOrder co = poe;
System.out.println("sourceAgentUuid= " + co.getSourceAgentUuid());
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "agent")
class Agent {
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String uuid;
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
@XmlType(name = "customerOrder")
class CustomerOrder {
@XmlAttribute(name = "sourceAgentUuid")
@XmlIDREF
@XmlSchemaType(name = "IDREF")
protected Object sourceAgentUuid;
public Object getSourceAgentUuid() {
return sourceAgentUuid;
}
public void setSourceAgentUuid(Object sourceAgentUuid) {
this.sourceAgentUuid = sourceAgentUuid;
}
}
最佳答案
@XmlIDREF 及其对应的 @XmlID 是“XML 化指针”,在 XML 文本中显示为字符串。 JAXB 匹配此类值对并将匹配引用解析为良好的对象引用。
因此,在解码之后,您将看不到 XML 文件中的字符串;
Object sourceAgentUuid
(在您的情况下)将包含对该“源代理”对象的引用(如果存在这样的 XML 元素,其 @XmlID 设置为该值)或 null。
关于java - jaxb 解码子 @XmlIDREF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257815/
我有一个对象 (A),它具有另一个对象 (B) 的属性。当编码对象 A 时,我存储对对象 B 的引用。B 中的 ID 本身就是一个对象(Mongo ObjectId)。我已将 MongoId 对象包装
我有课 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "customerOrder", propOrder = { "demand
我有一个相当复杂的数据结构,我似乎无法正确解码。 @XmlRootElement class Tree { @XmlID private String id; @XmlJavaTypeAd
我对 XML 很陌生,我遇到了一个无法解决的问题,在环顾了几个小时后,我决定发布我的问题。 我使用 @XmlIDREF 来获取 XML 文档中某些 Java 类的 XmlID。一切工作正常,但是当 J
我已经研究这个问题好几个小时了,可能很简单,但我不再明白了: 我有一个通过 jax-rs 呈现为 json 的实体 (Param)。该实体引用另一个实体(步骤)。在编写/读取 json 时,我不想看到
好的。我是 JAXB 新手,在 XmlID 和 XmlIDREF 方面遇到一些麻烦,其中 ID 位于抽象类中。 这是我的问题: 抽象类 @XmlAccessorType(XmlAccessType.F
jaxb @XmlIDREF @XmlID 工作惊人 我的 xml 输入是 1
本文整理了Java中org.apache.xmlbeans.XmlIDREF.set()方法的一些代码示例,展示了XmlIDREF.set()的具体用法。这些代码示例主要来源于Github/Stack
我有以下类(class): @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Employee {
我正在尝试使用 JAXB 整理一些数据。我的问题如下:我有一个类 Frame,其中包含信号图。 @XmlRootElement(name = "frame") @XmlAccessorType(Xml
我已经为我遇到的问题设置了一个最小的工作示例。这些是 JAXB 类。 moxytest/A.java package moxytest; @XmlRootElement public class A
我想知道是否可以注释我的类,以便编码器第一次遇到一个对象时,它会生成一个适当类型的 XML 元素,但是任何其他任何对该对象的后续引用都将具有一个 XML IDREF条目已创建? 最佳答案 您可以利用
我正在使用 jax-ws 编写 Web 服务。 Web 服务的方法之一返回 bean,其中包含对其父级的引用。为了防止循环引用,我在我的 bean 中使用了 JAXB @XMLID 和 @XMLIDR
我有以下 XML: RIGHT1 RIGHT_NOT_EXISTING 这里是映射: @XmlAccessorType(XmlAccessType.FIELD) publ
我正在尝试使用 MOXy JAXB 来序列化类 A,它看起来像: @XmlAccessorType(XmlAccessType.NONE) @XmlRootElement public class A
我正在使用 CXF 公开 Web 服务。我使用 @XmlID 和 @XmlIDREF JAXB 注释来在编码/解码期间维护对象图的引用完整性。 WSDL 正确地包含具有 xs:id 和 xs:idre
您好,我在使用网络服务时遇到问题我有一个包含许多角色的用户对象。 当我从包含一个角色的网络服务中获取一个用户(Id:3)时,该角色包含许多用户(id:3和id 2)。我收到一个错误 由以下原因引起:j
更新 - 查看底部的编辑 IDRefs/keyrefs 似乎在 JAXB 注释中是可能的,但 ref 最终成为元素文本。 我希望 ref 是元素的属性。 例如,给定这个对象模型: @XmlType p
我想知道是否可以对我的类进行注释,以便编码器第一次遇到对象时,它会生成适当类型的 XML 元素,但任何其他对该对象的后续引用都将具有 XML IDREF条目已创建? 最佳答案 您可以利用 JAXB 的
我有这样两个实体: @XmlRootElement(name = "provider") @XmlAccessorType(XmlAccessType.PROPERTY) @Entity pub
我是一名优秀的程序员,十分优秀!