Javax.xml.bind.JAXBElement Class



Introduction

The javax.xml.bind.JAXBElement class is the JAXB representation of an Xml Element.This class represents information about an Xml Element from both the element declaration within a schema and the element instance value within an xml document with the following properties −

  • element's xml tag name

  • value represents the element instance's atttribute(s) and content model

  • element declaration's declaredType (xs:element @type attribute)

  • scope of element declaration

  • boolean nil property. (element instance's xsi:nil attribute)

Class declaration

Following is the declaration for javax.xml.bind.JAXBElement class −

public class JAXBElement<T>
   extends Object
      implements Serializable

Field

Following are the fields for javax.xml.bind.JAXBElement class −

  • protected Class<T> declaredType − This is the Java datatype binding for xml element declaration's type

  • protected QName name − This is the xml element tag name.

  • protected boolean nil − This is true if the xml element instance has xsi:nil="true".

  • protected Class scope − This is the scope of xml element declaration representing this xml element instance.

  • protected T value − This is the xml element value.

Class constructors

S.N. Constructor & Description
1 JAXBElement(QName name, Class<T> declaredType, Class scope, T value)

This constructs an xml element instance.

2 JAXBElement(QName name, Class<T> declaredType, T value)

This constructs an xml element instance.

Class methods

S.N. Method & Description
1 Class<T>getDeclaredType()

This method returns the Java binding of the xml element declaration's type attribute.

2 QName getName()

This method returns the xml element tag name.

3 Class getScope()

This method returns scope of xml element declaration.

4 T getValue()

This method returns the content model and attribute values for this element.

5 boolean isGlobalScope()

This method returns true iff this xml element declaration is global.

6 boolean isNil()

This method returns true iff this element instance content model is nil.

7 boolean isTypeSubstituted()

This method returns true iff this xml element instance's value has a different type than xml element declaration's declared type.

8 void setNil(boolean value)

This method sets whether this element has nil content.

9 void setValue(T t)

This method sets the content model and attributes of this xml element.

Methods inherited

This class inherits methods from the following classes −

javax.xml.Object

Example

The following example shows the usage of java.xml.bind.JAXBElement class. To proceed, consider the following Student class which will be used to have objects for marshalling and unmarshalling purposes −

package com.tutorialspoint;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
 
@XmlRootElement
public class Student{
 
   String name;
   int age;
   int id;

   public String getName(){
      return name;
   }

   @XmlElement
   public void setName(String name){
      this.name = name;
   }

   public int getAge(){
      return age;
   }

   @XmlElement
   public void setAge(int age){
      this.age = age;
   }

   public int getId(){
      return id;
   }

   @XmlAttribute
   public void setId(int id){
      this.id = id;
   }
}

Now let us create main class which will be used to marshal ie. convert Student object to XML. Here we will create a JAXBElement of a Student object and then update StringWriter object using JAXBContext. This example marshals the Student object and prints the XML.

package com.tutorialspoint;

import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;

public class JAXBElementDemo {
   public static void main(String[] args) {
      //Create a student object
      Student student = new Student();

      //fill details of the student
      student.setName("Robert");
      student.setId(1);
      student.setAge(12);

      try {
         //create JAXBElement of type Student
         //Pass it the student object
         JAXBElement<Student> jaxbElement =  new JAXBElement( 
            new QName(Student.class.getSimpleName()), Student.class, student);

         //Create a String writer object which will be 
         //used to write jaxbElment XML to string
         StringWriter writer = new StringWriter();

         // create JAXBContext which will be used to update writer 		
         JAXBContext context = JAXBContext.newInstance(Student.class);

         // marshall or convert jaxbElement containing student to xml format
         context.createMarshaller().marshal(jaxbElement, writer);
      
         //print XML string representation of Student object			
         System.out.println( writer.toString() ); 

      } catch (JAXBException e) {			
         e.printStackTrace();
      }
   }
}

Let us compile and run the above program, this will produce the following result −

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Student id="1">
   <age>12</age>
   <name>Robert</name>
</Student>
Advertisements