中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用JAXBContext設置xml節點屬性

發布時間:2021-08-10 11:23:24 來源:億速云 閱讀:117 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關如何使用JAXBContext設置xml節點屬性的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

JAXBContext 設置xml節點屬性

在使用JAXBContext將javaBean轉化為xml時

會出現這樣的需求:

<xml version="2.0">
    ....
</xml>

那么xml節點里的屬性值version需要怎么設置

使用@XmlAttribute標簽即可,如下代碼。

@XmlRootElement(name = "Xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class RequestBean{
 
    @XmlAttribute(name = "version") //設置節點屬性
    private String version; 
    private Body body;         
    @XmlElement(name = "sign")  //設置子節點
    private String sign; 
    //省略封裝
}
 
@XmlRootElement(name = "Body")
@XmlAccessorType(XmlAccessType.FIELD)
public class Body{
    ...
}

最終得到的xml文件大致為:

<Xml version="2.0">
    <sign>111111</sign>
    <Body>
 <Amount>111</Amount>
 <Fee>fee</Fee>
 <PayerName>payname</PayerName>
 <AccountType>accountType</AccountType>
    </Body>
</Xml>

JAXBContext解析XML集合對象

@XmlElementWrapper 為數組元素或集合元素定義一個父節點。

如,類中有一元素為List items,若不加此注解,該元素將被映射為

<items>...</items>
    <items>...</items>

這種形式,此注解可將這個元素進行包裝,如:

@XmlElementWrapper(name="items")
    @XmlElement(name="item")
    public List items;

將會生成這樣的XML樣式:

<items>
        <item>...</item>
        <item>...</item>
    </items>

Demo如下:

實體類一(定義一個被包含的子項Item):
package org.ywzn.po; 
import javax.xml.bind.annotation.XmlAttribute; 
public class Item { 
 private String infoType; 
 private String nodeId; 
 private String resultCode; 
 private String resultString; 
 public Item() {
  super();
 }
 
 public Item(String infoType, String nodeId, String resultCode,
   String resultString) {
  super();
  this.infoType = infoType;
  this.nodeId = nodeId;
  this.resultCode = resultCode;
  this.resultString = resultString;
 }
 
 @XmlAttribute(name = "InfoType")
 public String getInfoType() {
  return infoType;
 }
 
 public void setInfoType(String infoType) {
  this.infoType = infoType;
 }
 
 public String getNodeId() {
  return nodeId;
 }
 
 public void setNodeId(String nodeId) {
  this.nodeId = nodeId;
 }
 
 public String getResultCode() {
  return resultCode;
 }
 
 public void setResultCode(String resultCode) {
  this.resultCode = resultCode;
 }
 
 public String getResultString() {
  return resultString;
 }
 
 public void setResultString(String resultString) {
  this.resultString = resultString;
 } 
}
實體類二(定義一個有List集合的實體類):
package org.ywzn.po; 
import java.util.List; 
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
 
@XmlRootElement
public class Message { 
 private String version; 
 private Head head; 
 private List<Item> items; 
 @XmlAttribute(name="version")
 public String getVersion() {
  return version;
 }
 
 public void setVersion(String version) {
  this.version = version;
 }
 
 @XmlElement(name="Head")
 public Head getHead() {
  return head;
 }
 
 public void setHead(Head head) {
  this.head = head;
 }
 
 public List<Item> getItems() {
  return items;
 }
 
 @XmlElementWrapper(name="Items")
 @XmlElement(name="Item")
 public void setItems(List<Item> items) {
  this.items = items;
 }  
}
測試方法:
package org.ywzn.main; 
import java.util.ArrayList;
import java.util.List; 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller; 
import org.ywzn.po.Head;
import org.ywzn.po.Item;
import org.ywzn.po.Message;
import org.ywzn.po.Parameters;
import org.ywzn.po.Room;
 
public class Java2XMLMany { 
 public static void main(String[] args) {
  // <?xml version='1.0' encoding='UTF-8' standalone='no' ?> <Message
  // version='1.0'><Header Time='2015-05-22 10:34:27' MessageType='LOGIN'
  // BusinessId='B730EB39-CEFF-4a38-B633-D8936EB8AEF7' SessionId='936'
  // /><Parameters> <items Sum='1' Offset='1' Cur='1'> <item
  // Infotype='LogUser'> <PassWord
  // >D41D8CD98F00B204E9800998ECF8427E</PassWord></item> </items>
  // </Parameters> </Message>
 
  // TODO Auto-generated method stub
  Item item = new Item("LOGIN","789", "xxx","xxx");
  List<Item> list = new ArrayList<Item>();
  list.add(item);
  Head head = new Head("2015-05-21 16:46:14", "LOGIN", "8D24CE2B-5");
  Parameters parameters = new Parameters(list);
  // Message message = new Message(head,"1.0",parameters);
  Message message = new Message();
  message.setVersion("1.0");
  message.setHead(head);
  message.setItems(list);
  try {
   JAXBContext context = JAXBContext.newInstance(Message.class);
   Marshaller createMarshaller = context.createMarshaller();
   createMarshaller
     .setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
 
   createMarshaller.marshal(message, System.out);
  } catch (JAXBException e) {
   e.printStackTrace();
  }
 }
 
}
輸出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<message version="1.0">
    <Head businessId="8D24CE2B-5" MessageType="LOGIN" Time="2015-05-21 16:46:14"/>
    <Items>
        <Item InfoType="LOGIN">
            <nodeId>789</nodeId>
            <resultCode>xxx</resultCode>
            <resultString>xxx</resultString>
        </Item>
    </Items>
</message>

感謝各位的閱讀!關于“如何使用JAXBContext設置xml節點屬性”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柘荣县| 青阳县| 萨嘎县| 同仁县| 常熟市| 大化| 乌苏市| 贵南县| 漾濞| 嘉鱼县| 德安县| 凉城县| 盈江县| 隆安县| 霍城县| 铜陵市| 湄潭县| 汉沽区| 天等县| 晋城| 博罗县| 丰原市| 浙江省| 日喀则市| 邵武市| 罗田县| 凭祥市| 子洲县| 绥德县| 类乌齐县| 波密县| 马关县| 于田县| 吴堡县| 固安县| 吉林省| 盐山县| 故城县| 兴城市| 高陵县| 连城县|