新手问题。 我在询问之前做了搜索! 我想对一些Java类建模,以使JAXB编组的输出如下(基本上是HTML表数据-XML):

   <td>
      <span class="myClass">assets</span>
   </td>
   <td>some text</td>
   <td>some more text</td>

基本上,让所有带有文本值的东西都能正常工作很容易。 但是,当我尝试提供上述范围的声明(声​​明为单独的XMLElement)时,我无法单独获取“文本”。 例如,它要么将文本包装在声明为保留文本的String属性的名称中,要么如果我尝试使用@XmlValue将其关闭,则它会抱怨您无法在同一声明中混合使用XMLElement和XMLValue(即使我仅根据上面的上下文使用一个或另一个-每个td包含一个span或文本,但不能同时包含两者。

输出的种类是:

<td><span class="myClass">assets</span></td><td><value>some text></value></td>

最终,问题归结为“我如何删除那些“价值”要素?” 我想要:

<td><span class="myClass">assets</span></td><td>some text</td>

我可以发布数据,但实际上仅在绝对必要时发布。 我希望上面的解释足以帮助某人提供解决方案。

谢谢大家的协助。

===============>>#1 票数:2

好的,这就是答案。 看起来很简单,但是希望它可以节省其他人一个小时的jaxb文档破解和精练工作。 请执行以下操作-真正的问题是使TD成为某种形式的多态性-在我的情况下,我只想要一个span或纯文本值。 两者都没有用例。

@XmlSeeAlso(Span.class)
@XmlRootElement(name = "td")
public class TableData {

private List<Object> items;

public TableData() {}

public TableData(List<Object> items) {
    this.items = items;
}

@XmlMixed
@XmlAnyElement
public List<Object> getItems() {
    return items;
}

public void setItems(List<Object> items) {
    this.items = items;
}

}

我有一个Span类(也单独声明为XMLElement。诀窍是放宽对值可以是哪种类型的限制(不要尝试声明两种属性类型,一种用于文本,而另一种用于Span.class)。请注意@ XmlSeeAlso,@ XmlMixed和@XmlAnyElement。在某些情况下,@ XmlElementRef和@XmlElementRefs更适合。

对于更完整的讨论,我建议在这篇文章中Blaise Doughan给出的答案: JAXB-Java / XMLValue&XMLElement冲突

  ask by arcseldon translate from so

未解决问题?本站智能推荐:

1回复

如何使用JAXB生成一个类,其元素可以包含字符串或XML?

我正在使用JAXB从XML模式生成类。 我的XML中有一个元素status ,可能包含纯文本或XML(或两者)。 例如,以下是所有有效内容: 按照上一个问题 - 如何使用有时包含XML内容的JAXB编组字符串,有时不包含? - 通过使用DomHandler ,我能够手动调整类以成功
1回复

如何访问另一个xml元素(JAXB bindingsl)中的xml元素

因此,我有一个xsd模式,可以有一个具有一组属性的用户,但是该用户可能有很多股份(我正在开发股票经纪应用程序),当用户购买股份时,我将XML解组为一个列表中,我可以获取和设置用户属性,但只能获取无法设置,更新,删除的共享对象。 有任何想法吗?
2回复

如何使用JAXB在Java中的另一个元素内创建元素?

我有一个Java代码,我正在使用JAXB创建XML文件,我知道如何创建根元素和元素,但是我想从像这样的元素中创建子元素: 我现在只知道如何创建这样的: 因此,如果我想将参数放入hostName中,该怎么办: 最后就是我使用的Java代码: 我将注释放在以下类中:
1回复

JAXB编组:更改元素,应声明一个名称空间

使用JAXB编组时,是否会影响名称空间/命名空间前缀的声明 元素 ? 当前,所有名称空间前缀都在根元素上声明,但是由于处理我的XML的系统的局限性,我需要在子元素上声明它们(仍然会生成有效的xml文档)。 向官方jaxb问题跟踪器提出了类似但不完全相同的请求,但在2006年, 开发人
3回复

JAXB将引用列表绑定到另一个元素

用一个例子更容易解释, 样本XML: 这将需要Company.java和Employee.java。 我的问题是,如何使用Jaxb批注将xml绑定到java对象?
1回复

使用EclipseLink MOXy和JAXB的XPath给出了另一个元素的值

我想获取xml中某个元素的文本值。 在下面的XML中,当CODE的值为'Code1'时,我想获得SUBCHILD的值,而与MP实体的位置无关,当可能有许多MP元素时。 我也希望能够使用具有@XMLPath属性的JAXB和MOXy来执行此操作 我有的XML是这样的: 我希望“ V
2回复

JAXB:从属性生成对象,从元素生成另一个

我需要知道是否可以解组xml并生成子对象。 例如: 有了这个xml,我想生成3个对象。 一个包含电动机列表的类,每个电动机对象都是一个包含其元素的类。 另一类: 可以这样做吗? 我找不到很好的例子。
1回复

jaxb解组xml元素以包含一些字段

我有一些课: 和xml: <location id="10"> <roomTitle>string</roomTitle> <specializationId>10</specializationId> </l
1回复

可以在根元素中包含globalBinding标签吗?

我有以下外部绑定文件- <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="h
1回复

我可以在JAXB中为有时包含其他元素并且有时直接数据的元素建模吗

Web服务有时会以以下形式提供元素 有时像 我不受网络服务的控制,因此无法更改 我将结果读入JAXB模型。 是否可以在JAXB中对这种不一致进行建模,我的模型目前仅代表第一个。