net.sf.json.xml.XMLSerializer क्लास JSON को XML में ट्रांसफॉर्म करने के लिए एक यूटिलिटी क्लास है। जब JSONObject इंस्टेंस को XML में ट्रांसफॉर्म किया जाता है, तो यह क्लास JSON में वापस कन्वर्ट करने के लिए हिंट्स जोड़ सकती है। हम XMLSerializer क्लास के write() मेथड का उपयोग JSON वैल्यू को UTF-8 एनकोडिंग के साथ XML स्ट्रिंग में लिखने के लिए कर सकते हैं और यह एक वेल-फॉर्म्ड XML डॉक्यूमेंट का स्ट्रिंग रिप्रेजेंटेशन रिटर्न कर सकता है।
सिंटैक्स
public String write(JSON json)
उदाहरण
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
public class ConvertBeanToXMLTest {
public static void main(String[] args) {
Student student = new Student("Sai", "Adithya", 25, "Pune");
JSONObject jsonObj = JSONObject.fromObject(student);
System.out.println(jsonObj.toString(3)); // प्रिटी प्रिंट JSON
XMLSerializer xmlSerializer = new XMLSerializer();
String xml = xmlSerializer.write(jsonObj);
System.out.println(xml);
}
public static class Student {
private String firstName, lastName, address;
public int age;
public Student(String firstName, String lastName, int age, String address) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.address = address;
}
// गेटर्स...
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public int getAge() { return age; }
public String getAddress() { return address; }
}
}
आउटपुट
{
"firstName": "Sai",
"lastName": "Adithya",
"address": "Pune",
"age": 25
}
Pune
25
Sai
Adithya
प्रक्रिया प्रवाह
- बीन → JSONObject: JSONObject.fromObject(bean)
- JSONObject → XML: XMLSerializer.write(jsonObj)
- टाइप हिंट्स: डिफ़ॉल्ट रूप से इनेबल्ड (type="string", type="number")
XML आउटपुट कस्टमाइजेशन
XMLSerializer serializer = new XMLSerializer();
serializer.setTypeHintsEnabled(false); // टाइप हिंट्स हटाएं
serializer.setRootName("student"); // कस्टम रूट एलिमेंट
serializer.setNamespace("https://example.com"); // XML नेमस्पेस
String xml = serializer.write(jsonObj);
कस्टम रूट नाम के साथ आउटपुट
Pune
25
Sai
Adithya
नेस्टेड ऑब्जेक्ट्स और कलेक्शन्स
class Student {
String name;
Address address; // नेस्टेड ऑब्जेक्ट
List<String> courses; // कलेक्शन
}
// JSON: {"name":"Sai", "address":{"city":"Pune"}, "courses":["Java","Python"]}
// XML आउटपुट:
Sai
Pune
Java
Python
सीमाएं
- एट्रिब्यूट्स vs एलिमेंट्स पर सीमित कंट्रोल
- नेमस्पेस हैंडलिंग बेसिक है
- XML स्कीमा वैलिडेशन बिल्ट-इन नहीं
- कॉम्प्लेक्स XML स्ट्रक्चर्स के लिए अनुपयुक्त
आधुनिक विकल्प
- Jackson XmlMapper: @JacksonXmlRootElement, @JacksonXmlProperty एनोटेशन्स
- JAXB: @XmlRootElement, @XmlElement, स्कीमा जनरेशन
- XStream: सरल API, कस्टम कन्वर्टर्स