Java Language
XOM - XML ऑब्जेक्ट मॉडल
खोज…
XML फ़ाइल पढ़ना
एक्सएमओ के साथ एक्सएमएल डेटा लोड करने के लिए आपको एक Builder
बनाना होगा जिससे आप इसे एक Document
में बना सकते हैं।
Builder builder = new Builder();
Document doc = builder.build(file);
रूट तत्व, xml फ़ाइल में उच्चतम पैरेंट पाने के लिए, आपको Document
उदाहरण पर getRootElement()
का उपयोग करने की आवश्यकता है।
Element root = doc.getRootElement();
अब एलीमेंट क्लास के पास बहुत सारे आसान तरीके हैं जो पढ़ने के लिए xml को वास्तव में आसान बनाते हैं। सबसे उपयोगी में से कुछ नीचे सूचीबद्ध हैं:
-
getChildElements(String name)
-Elements
एक सरणी के रूप में कार्य करने वालेElements
उदाहरण देता है -
getFirstChildElement(String name)
- उस टैग के साथ पहला चाइल्ड एलिमेंट लौटाता है। -
getValue()
- तत्व के अंदर मान लौटाता है। -
getAttributeValue(String name)
- निर्दिष्ट नाम के साथ एक विशेषता का मान लौटाता है।
जब आप getChildElements()
कॉल करते हैं तो आपको एक Elements
इंस्टेंस मिलता है। इससे आप अंदर के सभी तत्वों को पुनः प्राप्त करने के लिए उस पर get(int index)
विधि के माध्यम से लूप और कॉल कर सकते हैं।
Elements colors = root.getChildElements("color");
for (int q = 0; q < colors.size(); q++){
Element color = colors.get(q);
}
उदाहरण: यहाँ एक XML फ़ाइल पढ़ने का एक उदाहरण है:
XML फ़ाइल:
इसे पढ़ने और छापने के लिए कोड:
import java.io.File;
import java.io.IOException;
import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Elements;
import nu.xom.ParsingException;
public class XMLReader {
public static void main(String[] args) throws ParsingException, IOException{
File file = new File("insert path here");
// builder builds xml data
Builder builder = new Builder();
Document doc = builder.build(file);
// get the root element <example>
Element root = doc.getRootElement();
// gets all element with tag <person>
Elements people = root.getChildElements("person");
for (int q = 0; q < people.size(); q++){
// get the current person element
Element person = people.get(q);
// get the name element and its children: first and last
Element nameElement = person.getFirstChildElement("name");
Element firstNameElement = nameElement.getFirstChildElement("first");
Element lastNameElement = nameElement.getFirstChildElement("last");
// get the age element
Element ageElement = person.getFirstChildElement("age");
// get the favorite color element
Element favColorElement = person.getFirstChildElement("fav_color");
String fName, lName, ageUnit, favColor;
int age;
try {
fName = firstNameElement.getValue();
lName = lastNameElement.getValue();
age = Integer.parseInt(ageElement.getValue());
ageUnit = ageElement.getAttributeValue("unit");
favColor = favColorElement.getValue();
System.out.println("Name: " + lName + ", " + fName);
System.out.println("Age: " + age + " (" + ageUnit + ")");
System.out.println("Favorite Color: " + favColor);
System.out.println("----------------");
} catch (NullPointerException ex){
ex.printStackTrace();
} catch (NumberFormatException ex){
ex.printStackTrace();
}
}
}
}
यह कंसोल में प्रिंट होगा:
Name: Smith, Dan
Age: 23 (years)
Favorite Color: green
----------------
Name: Autry, Bob
Age: 3 (months)
Favorite Color: N/A
----------------
XML फ़ाइल में लिखना
का उपयोग कर एक XML फ़ाइल के लिए लिख XOM बहुत छोड़कर इस मामले में हम उदाहरणों कर रहे हैं के बजाय उन्हें जड़ से दूर पुन: प्राप्त करने इसे पढ़ने के समान है।
नया एलिमेंट बनाने के लिए कंस्ट्रक्टर Element(String name)
। आप एक रूट एलीमेंट बनाना चाहेंगे, ताकि आप इसे एक Document
आसानी से जोड़ सकें।
Element root = new Element("root");
Element
क्लास में तत्वों को संपादित करने के कुछ आसान तरीके हैं। वे नीचे सूचीबद्ध हैं:
-
appendChild(String name)
- यह मूल रूप से नाम के लिए तत्व का मूल्य निर्धारित करेगा। -
appendChild(Node node)
- यहnode
तत्वों को माता-पिता बना देगा। (तत्व नोड हैं इसलिए आप तत्वों को पार्स कर सकते हैं)। -
addAttribute(Attribute attribute)
- तत्व के लिए एक विशेषता जोड़ देगा।
Attribute
वर्ग में विभिन्न निर्माणकर्ताओं की एक जोड़ी है। सबसे सरल एक Attribute(String name, String value)
।
एक बार जब आप अपने सभी तत्वों को अपने मूल तत्व में जोड़ लेते हैं तो आप इसे Document
में बदल सकते हैं। Document
एक ले जाएगा Element
यह निर्माता में एक तर्क के रूप।
आप अपने XML को किसी फ़ाइल में लिखने के लिए एक Serializer
का उपयोग कर सकते हैं। आपको Serializer
के निर्माता में पार्स करने के लिए एक नई आउटपुट स्ट्रीम बनाने की आवश्यकता होगी।
FileOutputStream fileOutputStream = new FileOutputStream(file);
Serializer serializer = new Serializer(fileOutputStream, "UTF-8");
serializer.setIndent(4);
serializer.write(doc);
उदाहरण
कोड:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import nu.xom.Attribute;
import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Elements;
import nu.xom.ParsingException;
import nu.xom.Serializer;
public class XMLWriter{
public static void main(String[] args) throws UnsupportedEncodingException,
IOException{
// root element <example>
Element root = new Element("example");
// make a array of people to store
Person[] people = {new Person("Smith", "Dan", "years", "green", 23),
new Person("Autry", "Bob", "months", "N/A", 3)};
// add all the people
for (Person person : people){
// make the main person element <person>
Element personElement = new Element("person");
// make the name element and it's children: first and last
Element nameElement = new Element("name");
Element firstNameElement = new Element("first");
Element lastNameElement = new Element("last");
// make age element
Element ageElement = new Element("age");
// make favorite color element
Element favColorElement = new Element("fav_color");
// add value to names
firstNameElement.appendChild(person.getFirstName());
lastNameElement.appendChild(person.getLastName());
// add names to name
nameElement.appendChild(firstNameElement);
nameElement.appendChild(lastNameElement);
// add value to age
ageElement.appendChild(String.valueOf(person.getAge()));
// add unit attribute to age
ageElement.addAttribute(new Attribute("unit", person.getAgeUnit()));
// add value to favColor
favColorElement.appendChild(person.getFavoriteColor());
// add all contents to person
personElement.appendChild(nameElement);
personElement.appendChild(ageElement);
personElement.appendChild(favColorElement);
// add person to root
root.appendChild(personElement);
}
// create doc off of root
Document doc = new Document(root);
// the file it will be stored in
File file = new File("out.xml");
if (!file.exists()){
file.createNewFile();
}
// get a file output stream ready
FileOutputStream fileOutputStream = new FileOutputStream(file);
// use the serializer class to write it all
Serializer serializer = new Serializer(fileOutputStream, "UTF-8");
serializer.setIndent(4);
serializer.write(doc);
}
private static class Person {
private String lName, fName, ageUnit, favColor;
private int age;
public Person(String lName, String fName, String ageUnit, String favColor, int age){
this.lName = lName;
this.fName = fName;
this.age = age;
this.ageUnit = ageUnit;
this.favColor = favColor;
}
public String getLastName() { return lName; }
public String getFirstName() { return fName; }
public String getAgeUnit() { return ageUnit; }
public String getFavoriteColor() { return favColor; }
public int getAge() { return age; }
}
}
यह "out.xml" की सामग्री होगी: