2 u010875056 u010875056 于 2016.01.23 05:39 提问

关于JAXB生成XML的小问题

我需要用JAXB生成如下的XML文件
图片说明
但是无法加入图中的属性type。
我的代码如下:
package Task2.Generated;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"food"
})
@XmlRootElement(name = "menu")
public class Menu {

@XmlElement(required = true)
protected List<Menu.Food> food;

public List<Menu.Food> getFood() {
    if (food == null) {
        food = new ArrayList<Menu.Food>();
    }
    return this.food;
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "name",
    "price",
    "description",
    "calories",
    //"type"
})
public static class Food {
    //private String type;  

    @XmlElement(required = true)
    protected String name;
    @XmlElement(defaultValue = "1")
    protected float price;
    @XmlElement(required = true, defaultValue = "")
    protected String description;
    protected int calories;
    @XmlAttribute(name = "category", required = true)
    protected String category;
    @XmlAttribute(name = "type", required = true)
    protected String type;
    public String getName() {
        return name;
    }
    public void setName(String value) {
        this.name = value;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float value) {
        this.price = value;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String value) {
        this.description = value;
    }
    public int getCalories() {
        return calories;
    }
    public void setCalories(int value) {
        this.calories = value;
    }

    public String getCategory() {
        return category;
    }
    public void setCategory(String value) {
        this.category = value;
    }




    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {

        "type"
    })
    public static class Description {
        //private String type;  


        @XmlAttribute(name = "type", required = true)
        protected String type;
        public String getType() {
            return type;
        }
        public void setType(String value) {
            this.type = value;
        }
  }
}

}

4个回答

u010875056
u010875056   2016.01.28 08:16
已采纳

自己做出了了,就是加个class

devmiao
devmiao   Ds   Rxr 2016.01.23 09:33
u010875056
u010875056 我自己已经做出了了。。。。当时太累出了个送分题都没人答
2 年多之前 回复
u010875056
u010875056 我想在生成的XML元素description中增加属性type,就像<description type="hot">bad</description>,我现在的代码无法把type加进去。你给的链接我看了,没有解决这种情况的
2 年多之前 回复
made_differ
made_differ   2016.01.23 11:50

遇到什么问题?描述清楚

made_differ
made_differ 回复浅水微渤:用dom4j
2 年多之前 回复
u010875056
u010875056 我想在生成的XML元素description中增加属性type,就像<description type="hot">bad</description>,我现在的代码无法把type加进去
2 年多之前 回复
u010875056
u010875056   2016.01.28 08:16

自己做出了了,就是加个class

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java关于xml的注解: JAXB(自动生成xml文件)
介绍:  Java和xml的互相转换, 依靠强大的JAXBContext可以轻松实现。   JAXBContext是jdk自带的一个工具,包路径:javax.xml.bind.JAXBContext。    关于JAXB:  JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可
jaxb常用的生成xml范例
jaxb生成xml的简单入门
用JAXB从对象生成XML
Java代码   import java.io.FileOutputStream;      import javax.xml.bind.JAXBContext;   import javax.xml.bind.Marshaller;   import javax.xml.bind.annotation.XmlRootElement;      public class 
利用JAXB通过XML模式生成XML文档
XML 模式是 XML 文档结构基于 XML 的表示。很多 J2EE 开发人员都使用 XML 模式来而非文档类型定义 (DTD) 来生成 XML 文档,这是因为,与 DTD 不同,XML 模式支持多种数据类型和命名空间。 人们经常会需要一个基于 XML 模式的 XML 文档。例如,您可能会发现自己需要一个基于企业 JavaBeans 部署描述符架构 (ejb-jar_2_1.xsd) 的 XML
JAXB生成XML文件去除Standlone
/**      * JAXB:java对象转换为xml文件(java對象需要添加註解)      * @param obj 要序列化文件的java对象      * @param model java对象.Class      * @param path  生成的xml文件路径      * @return boolean 是否成功      * @throws Exception 
利用JAXB进行xml和javabean之间转换
Xml和javabean之间的互相转换是开发中常常遇到的问题,今天小试了一下JAXB,感觉真是太方便了,这里特此记录(JDK6中加入了JAXB,不需要额外导出包)       利用JAXB实现XML与Javabean之间的相互转换的大致思想:利用XML的生成相应的XSD或者DTD,然后利用该XSD或DTD生成对应的javabeanClass和ObjectFactory, 网上找个一个来描述了这个
使用Java jaxb处理bean生成xml中一些问题
在使用jaxb从bean转换为xml过程中,默认会将bean中属性为null的属性过滤掉,如下: @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "project") public class Person { private String name; private String address;
Java XML操作之JAXB玩转命名空间
本文讲解使用jaxb结合dom4j的XMLFilterImpl过滤器实现序列化和反序列化的完全控制 主要实现以下功能 序列化及反序列化时忽略命名空间 序列化时使用@XmlRootElement(namespace="http://www.lzrabbit.cn")注解作为类的默认命名空间,彻底消除命名空间前缀 序列化时引用类有不同命名空间时也不会生成命名空间前缀,而是在具体的x
用jaxb通过XSD生成Java类,java对象转换成xml文件
来,废话不多说,直接进入状态。 首先先使用Altova XMLSpy画一个xsd文件,或者直接使用代码写一个xsd文件,直接写代码就查查资料吧! 就用最简单的Student吧!画的Student.xsd 代码如下: 学生
Jaxb实现 复杂POJO 与 xml 的转换
Person: package com.test; import java.util.Date; import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotat