PHẦN 2: HIỆN THỰC ỨNG DỤNG 4.1.Giới thiệu ứng dụng
4.4.1. Chuyển từ XML sang lược đồ lớp
Mã XML được nhập vào từ website, mã này sẽ được đọc và phân tích xem có đúng tài liệu XML qui định không. Sau khi đã xác nhận mã XML đúng định dạng ta thực hiện đưa dữ liệu vào bộ nhớ thông qua hai lớp:
ClassStruct: Mô tả cho cấu trúc của một đối tượng, trong một lược đồ sẽ có nhiều lớp do đó ta sẽ dùng một mảng ClassStruct này.
Relationship: Tương tự lớp này mô tả cho quan hệ giữa hai lớp trong sơ đồ và ta cũng dùng một mảng các lớp Relationship để mô tả cho các quan hệ trong sơ đồ lớp.
Sau khi đã có được danh sách các lớp cùng với các quan hệ trong bô nhớ ta thực hiện vẽ các lớp & các quan hệ này ra thành mô hình và hiện mô hình lên trang web.
Dưới đây là đoạn mã thể hiện quá trình trên, đoạn mã này nằm trong lớp GetXML (control GetXML.ascx) hàm cmdTaoMoi_Click.
XmlDocument doc = new XmlDocument();//tạo document try
{
}
catch (XmlException exx) {
lblMsg.Text = "Lỗi phân tích XML: " + exx.Message; return;
}
if (doc.DocumentElement.ChildNodes.Count > 0) {
initSession();
//duyệt qua các node trong tài liệu, mỗi node nếu có sẽ là một class hoặc một relationship
for (int i = 0; i < doc.DocumentElement.ChildNodes.Count; i++) {
XmlNode node = doc.DocumentElement.ChildNodes[i]; //nếu node đó là class
if (node.Name.ToLower() == Defines.strObject.ToLower()) //la đoi tuong
{
ClassStruct cls = new ClassStruct();//Tạo lớp cls.parseXml(node);//lấy thông tin lớp
list.Objects.Add(cls);//thêm lớp đó vào danh sách lớp }//Nếu node đó là relationship
else if (node.Name.ToLower() == Defines.strRelation.ToLower())//la quan he
Relationship rlt = new Relationship();//tạo quan hệ rlt.parseXml(node);//lấy thông tin quan hệ
list.Relations.Add(rlt);//thêm quan hệ vào danh sách }
}
//Đánh dấu đã chuyển xong
Session["ThongBao"] = "Đã chuyễn mã XML thành sơ đồ lớp"; Session["List"] = list;//Lưu danh sách lại
}
else lblMsg.Text = "Không có đối tượng nào trong mã XML vừa nhập";
Việc vẽ lược đồ chỉ là công đoạn thể hiện ra ngoài cho người dùng thấy, nó được thực hiện trong hàm DrawAll của lớp DrawDiagram (control DrawDiagram.ascx).