السلام عليكم
سأشرح كيفية انشاء ملف XML
هذه التقنية الموجودة عند الجافا تسمى JAXP
Java API for XML Processing
وهي تقسم الى قسمين
الأول وهو DOM
Document Object Model
وهو ما سأشرحه اليوم هنا
والثاني هو SAX
Simple API for XML
وهو ما سأتحدث عنه لاحقا بدرس آخر
سنبدأ من DOM
وهي تفنية تعتمد على قراءة ملف ال XML ووضعه في الذاكرة
وتستطيع الحصول على معلومات الملف على شكل
Objects Tree
في هذا الدرس سنتكلم عن كيفية انشاء ملف XML
ومن ثم سنقرأ هذا الملف
هذا هم المثال::
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class SampleXMLWriter
{
public SampleXMLWriter()
{
}
public static void main(String a[])
{
File xmlFile = new File("SampleXML.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element root = document.createElement("root");
document.appendChild(root);
Element date = document.createElement("date");
date.appendChild(document.createTextNode("July 31 2005"));
Element student = document.createElement("student");
student.setAttribute("course","English");
student.setAttribute("level","Advance");
Element firstName = document.createElement("firstname");
firstName.appendChild(document.createTextNode("Pagera"));
Element lastName = document.createElement("lastname");
lastName.appendChild(document.createTextNode("Pagera"));
student.appendChild(firstName);
student.appendChild(lastName);
root.appendChild(date);
root.appendChild(student);
Source xmlSource = new DOMSource( document );
Result result = new StreamResult( new FileOutputStream(xmlFile) );
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer =
transformerFactory.newTransformer();
transformer.transform( xmlSource, result );
}
catch(TransformerFactoryConfigurationError factoryError )
{
factoryError.printStackTrace();
}
catch (ParserConfigurationException pc)
{
pc.printStackTrace();
}
catch (IOException io)
{
io.printStackTrace();
}
catch(Exception excep )
{
excep.printStackTrace();
}
}
}الشرح اولا يجب علينا انشاء ملف سنعطيه اسم SampleXMLWriter.xml
بعد هذه
علينا انشاء instance من DocumentBuilderFactory
الذي سننشئ من خلاله DocumentBuilder
الذي سننشئ منه ال Document
وهو ال Class الذي سيمكننا من انشاء XML Tags
او Elements
اول ما نبدأ به هو انشاء Element وهو الذي يمثل ال Root
لملف ال XML تستطيع ان تعطيه اي اسم فهو ال Tag
الذي سيحوي جميع Tags ملف ال XML
بعد أن أنشأنا ال Root الآن نستطيع ان نضيف عليه ما شئنا من Tags
طبعا جميع ال Tags سيتم انشائها عن طريق ال Document
ومن ثم نضيفها الى ال Tag الرئيسي وهو ال Root
كما نلاحظ هنا انشأنا Tag وأعطيناه الاسم date
كما واعطيماه قيمة وهي July 31 2005
بعدها أنشأنا Tag أخر باسم student
واضفنا له Attributes
عن طريق setAttribute() method
وهذا ال method يحتاج Two Parameters
الأول يمثل اسم ال Attribute
والثاني يمثل القيمة لهذا ال Attribute
بعد ذلك انشأنا Tow Elements
FirstName and LastName
وأعطيناهم قيم عن طريق createTextNode() method
ومن ثم أضفنا ال Tow Element
الى ال Student Element
ملف ال XML هو عبارة عن Tree
كل Element يحتوي على قيمة او مجموعة من Elements
ايضا يحتوي مجموعة من Attributes
بعد ان انتهينا من انشاء ملف ال XML بالنموذج الذي نريد
والذي حتى الآن موجود ضمن Document class طبعا بالذاكرة
الآن يجب علينا كتابة هذا الملف على الهارد داخل الملف الذي أنشاناه في البداية وهو SampleXMLWriter.xml
ويتم عن طريق ال Transformer Class
ولانشاء هذا الملف نحتاج الى عدة خطوات ولا علينا انشاء Class من نوع
TransformerFactory
والذي سننشئ عن طريقه Transformer Class
ومن Transformer نستدعي transform() method
والذي يحتاج Two Parameter
والأول وهو DOMSource
والذي يمثل ال Document الذي انشأ فيه نموذج ملف ال XML
وقد أنشأناه هنا Source xmlSource = new DOMSource( document );
والثاني وهو StreamResult
والذي يمثل الملف الذي نريد الكتابة فيه
والذ فتحنا OutputStream معه هنا
Result result = new StreamResult( new FileOutputStream(xmlFile) );
وبهذا سيتم انشاء ملف ال XML بالنموذج الذي نريد
وهذا هو
<?xml version="1.0" encoding="UTF-8" ?> - <root> <date>July 31 2005</date> - <student course="English" level="Advance"> <firstname>Pagera</firstname> <lastname>Pagera</lastname> </student> </root>
...........
أتمنى ان اكون قد وفقت بالشرح
واذا فيه اي شي مو واضح يا ريت تخبروني كرمال حاول اوضحوا اكتر
تابعوا الدرس القادم الذي سنقرأ فيه ملف ال XML الذي انشأناه هنا
خمل المثال من المرفقات
