JAXB向Xml非根節點添加一個或多個屬性

          JAXB 向Xml非根節點添加一個或多個屬性,直接上代碼,關于JAXB的相關注解可查閱JAVA API。

          原創文章,轉載請注明出處。http://www.aygfsteel.com/kangdy/archive/2011/11/23/364635.html

          code1: colors類  根節點
          code1
          package com.kangdy.test;

          import javax.xml.bind.annotation.XmlAccessType;
          import javax.xml.bind.annotation.XmlAccessorType;
          import javax.xml.bind.annotation.XmlElement;
          import javax.xml.bind.annotation.XmlRootElement;

          @XmlRootElement(name = "Colors")
          @XmlAccessorType(XmlAccessType.FIELD)
          public class Colors {
              
              @XmlElement(name = "red",nillable=true)
              private Red red;
              
              @XmlElement(name = "blue",nillable=true)
              private Blue blue;

              public Red getRed() {
                  return red;
              }

              public Blue getBlue() {
                  return blue;
              }

              public void setRed(Red red) {
                  this.red = red;
              }

              public void setBlue(Blue blue) {
                  this.blue = blue;
              }
          }

          code2:  Red類  子節點
          code2package com.kangdy.test;

          import javax.xml.bind.annotation.XmlAccessType;
          import javax.xml.bind.annotation.XmlAccessorType;
          import javax.xml.bind.annotation.XmlAttribute;
          import javax.xml.bind.annotation.XmlRootElement;

          @XmlRootElement(name = "red")
          @XmlAccessorType(XmlAccessType.FIELD)
          public class Red {
              
              private String value;
              
              @XmlAttribute(name = "att1")
              private String att;
              
              public String getValue() {
                  return value;
              }
              
              public void setValue(String value) {
                  this.value = value;
              }

              public String getAtt() {
                  return att;
              }

              public void setAtt(String att) {
                  this.att = att;
              }
              
          }


          code3:  類 Blue 子節點
          code3
          package com.kangdy.test;

          import javax.xml.bind.annotation.XmlAccessType;
          import javax.xml.bind.annotation.XmlAccessorType;
          import javax.xml.bind.annotation.XmlAttribute;
          import javax.xml.bind.annotation.XmlRootElement;

          @XmlRootElement(name = "blue")
          @XmlAccessorType(XmlAccessType.FIELD)
          public class Blue {
              private String value;
              
              @XmlAttribute(name = "att2")
              private String att2;
              
              @XmlAttribute(name = "att1")
              private String att;
              
              public String getAtt() {
                  return att;
              }

              public void setAtt(String att) {
                  this.att = att;
              }

              public String getValue() {
                  return value;
              }

              public void setValue(String value) {
                  this.value = value;
              }

              public String getAtt2() {
                  return att2;
              }

              public void setAtt2(String att2) {
                  this.att2 = att2;
              }
          }

          code4: main類
          code4
          package com.kangdy.test;

          import java.io.StringWriter;

          import javax.xml.bind.JAXBContext;
          import javax.xml.bind.Marshaller;

          public class Jaxbtest {
              public static void main(String[] args) throws Exception {

                  StringWriter writer = new StringWriter();
                  JAXBContext jc = JAXBContext.newInstance(Colors.class);
                  Marshaller ma = jc.createMarshaller();
                  ma.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
                  
                  Colors colors = new Colors();
                  Red red = new Red();
                  red.setAtt("att-red");
                  red.setValue("red");
                  Blue blue = new Blue();
                  blue.setValue("blue");
                  blue.setAtt("att-blue");
                  blue.setAtt2("blue-att2");
                  colors.setRed(red);
                  colors.setBlue(blue);
                  
                  ma.marshal(colors, writer);
                  System.out.println(writer.toString());

              }
          }

          運行結果:
          結果
          <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
          <Colors>
              <red att1="att-red">
                  <value>red</value>
              </red>
              <blue att1="att-blue" att2="blue-att2">
                  <value>blue</value>
              </blue>
          </Colors>

          posted on 2011-11-23 14:33 AK47 閱讀(10142) 評論(4)  編輯  收藏 所屬分類: java相關

          評論

          # re: JAXB向Xml非根節點添加一個或多個屬性[未登錄] 2014-01-14 10:08 lili

          1234  回復  更多評論   

          # re: JAXB向Xml非根節點添加一個或多個屬性 2014-08-06 11:22 TTBear

          請問一下想<error code="01">dsds</error>這種格式的怎么取出屬性code  回復  更多評論   

          # re: JAXB向Xml非根節點添加一個或多個屬性 2016-05-20 15:40 @jason

          那怎么給根節點增加屬性呢?  回復  更多評論   

          # re: JAXB向Xml非根節點添加一個或多個屬性 2016-08-09 15:00 12

          12  回復  更多評論   

          <2016年8月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新竹县| 崇阳县| 凤山县| 冕宁县| 南涧| 通海县| 镇江市| 名山县| 手机| 崇明县| 琼海市| 图片| 遵化市| 炉霍县| 芦山县| 开阳县| 衡山县| 抚州市| 沂水县| 龙江县| 广宗县| 泊头市| 上虞市| 建平县| 托克托县| 兴安盟| 石棉县| 潼南县| 阿拉善左旗| 徐汇区| 雅江县| 历史| 龙州县| 平罗县| 江源县| 邵武市| 通许县| 兴义市| 耿马| 晋城| 铁岭县|