03/08/2018, 10:23

Bài 02: Cấu trúc cây trong XML

Một tài liệu XML được tạo bởi các thẻ ( XML element ) và chúng có thể được tổ chức theo một cấu trúc cây thư mục, điều này còn có thể gọi là ...

Một tài liệu XML được tạo bởi các thẻ (XML element) và chúng có thể được tổ chức theo một cấu trúc cây thư mục, điều này còn có thể gọi là Nested  Elements trong XML. Vậy cách tổ chức như thế nào để có thể lưu trữ được dữ liệu trong thế giới thực? Chúng ta cùng tìm hiểu vấn đề này nhé.

1. Cấu trúc cây trong XML

Như ở bài tìm hiểu XML là gì mình có giới thiệu sơ lược về cách tạo thẻ Root Node (phần 2). Từ ví dụ đó ta có thể rút ra kết luận rằng các thẻ XML có thể lồng lên nhau, thẻ ngoài ta gọi là thẻ cha và các thể bên trong ta gọi là thẻ con.

Ví dụ: Sơ đồ cấu trúc cây tổ chức lưu trữ thông tin nhân viên trong một công ty

Với sơ đồ này ta sẽ thực hiện từng bước tạo tài liệu XML như sau:

Bước 1: Thẻ ngoài cùng root là company

<?xml version="1.0" encoding="UTF-8"?>
<company>
    
</company>

Bước 2: Bên trong thẻ company có hai thẻ employee.

<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employee>
       
    </employee>
    <employee>
        
    </employee>
</company>

Bước 3: Bên trong thẻ employee đầu tên gồm ba thẻ firstname, lastname và contactno tương đương với ba giá trị như sau:

  • firstname => Tanmay
  • lastname => Patil
  • contactno => 123456789
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employee>
        <firstname>
            Tanmay
        </firstname>
        <lastname>
            Patil
        </lastname>
        <contactno>
            123456789
        </contactno>
    </employee>
    <employee>
        
    </employee>
</company>

Bước 4: Tương tự cho nội dung bên trong thẻ employee thứ hai.

<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employee>
        <firstname>
            Tanmay
        </firstname>
        <lastname>
            Patil
        </lastname>
        <contactno>
            123456789
        </contactno>
    </employee>
    <employee>
        <firstname>
            Taniya
        </firstname>
        <lastname>
            Mishra
        </lastname>
        <contactno>
            123456789
        </contactno>
    </employee>
</company>

Như vậy là ta đã đặc tả xong cấu trúc XML lưu trữ dữ liệu ứng dụng quản lý nhân viên trong công ty.

Câu hỏi đặt ra là nếu ta lưu trữ thêm một nhân viên nữa thì phải làm thế nào? Rất đơn giản ta chỉ việc tạo thêm một thẻ employee và thêm thông tin là được.

<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employee>
        <firstname>
            Tanmay
        </firstname>
        <lastname>
            Patil
        </lastname>
        <contactno>
            123456789
        </contactno>
    </employee>
    <employee>
        <firstname>
            Taniya
        </firstname>
        <lastname>
            Mishra
        </lastname>
        <contactno>
            123456789
        </contactno>
    </employee>
    <employee>
        <firstname>
            Cuong
        </firstname>
        <lastname>
            Nguyen
        </lastname>
        <contactno>
            0979306603
        </contactno>
    </employee>
</company>

Quá đơn giản và dễ hiểu phải không các bạn.

2 Cấu trúc cây nhiều cấp trong XML

Lấy ví dụ ở phần thứ nhất và bổ sung thêm yêu cầu sau: Môi nhân viên lưu trữ thêm danh sách người thân của nhân viên đó (chỉ cần lưu trữ tên, mối quan hệ).

Trước tiên ta cần tổ chức XML lưu trữ người thân đã. Giả sử mình sẽ lưu trữ dạng sau:

<family>
    <person>
        <name>Nguyễn Sơn</name>
        <relationship>Cha</relationship>
    </person>
    <person>
        <name>Lê Thị Sửu</name>
        <relationship>Mẹ</relationship>
    </person>
    <person>
        <name>Nguyễn Văn Trường</name>
        <relationship>Anh trai</relationship>
    </person>
</family>

Ráp vào bài toán thứ nhất ta sẽ có cấu trúc XML sau:

<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employee>
        <firstname>
            Tanmay
        </firstname>
        <lastname>
            Patil
        </lastname>
        <contactno>
            123456789
        </contactno>
        <family>
            <person>
                <name>Nguyễn Sơn</name>
                <relationship>Cha</relationship>
            </person>
            <person>
                <name>Lê Thị Sửu</name>
                <relationship>Mẹ</relationship>
            </person>
            <person>
                <name>Nguyễn Văn Trường</name>
                <relationship>Anh trai</relationship>
            </person>
        </family>
    </employee>
</company>

Như vậy mỗi lần thêm nhân viên thì chỉ việc bổ sung thẻ employee và muốn thêm người thân thì chỉ việc bổ sung thẻ person.

3. Lời kết

Nếu bạn đã biết về HTML thì rất dễ hiểu bởi vì HTML được xây dựng dựa vào đặc tả của XML.

Bài này chúng ta đã học cách tạo một cấu trúc cây trong XML và thao tác với element khá nhiều. Tuy nhiên chúng ta chưa học nguyên tắc tạo ra element đó nên trong bài tiếp theo chúng ta sẽ tìm hiểu nguyên tắc tạo elements trong XML, ví dụ cách đặt tên và cách tạo thẻ không có thẻ đóng.

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

(ALTER) Sửa đổi cấu trúc bảng trong MySQL

Câu lệnh ALTER được dùng để sửa đổi cấu trúc của một bảng. Sửa đổi cấu trúc của một bảng bao gồm các công việc như: Thêm vào bảng một cột mới. Xóa bỏ một cột trong bảng Sửa một cột trong bảng Đổi tên bảng Cú pháp Cú pháp thêm vào bảng một cột mới ALTER TABLE ...

Trịnh Tiến Mạnh viết 11:02 ngày 18/08/2018

Cấu trúc (Struct) trong C#

Trong C#, một cấu trúc (structure) là một kiểu dữ liệu. Nó giúp bạn tạo một biến đơn mà giữ dữ liệu liên quan của các kiểu dữ liệu đa dạng. Từ khóa struct trong C# được sử dụng để tạo một cấu trúc (structure). Các cấu trúc được sử dụng để biểu diễn một bản ghi (record). Giả sử bạn muốn ...

Trịnh Tiến Mạnh viết 14:02 ngày 14/08/2018

Cấu trúc (Struct) trong C

Các mảng trong C cho phép bạn định nghĩa một vài loại biến có thể giữ giá trị của một vài thành phần cùng kiểu dữ liêu. Nhưng structure - cấu trúc là một loại dữ liệu khác trong ngôn ngữ lập trình C, cho phép bạn kết hợp các dữ liệu khác kiểu nhau. Cấu trúc được sử dụng để biểu diễn một ...

Bùi Văn Nam viết 13:38 ngày 14/08/2018

Cấu trúc cây (Tree Structure) trong XML

Một tài liệu XML luôn luôn có tính mô tả. Cấu trúc cây (Tree Structure) thường được biết đến với tên gọi Cây XML và đóng một vai trò rất quan trọng để mô tả bất kỳ tài liệu XML nào một cách dễ dàng. Cấu trúc cây chứa các phần tử gốc (hay phần tử cha), các phần tử con và … Bằng việc ...

Hoàng Hải Đăng viết 11:57 ngày 14/08/2018

Giới thiệu gem Awesome Nested Set - Thích hợp cho quản lý model cấu trúc cây

Cách đây 1 tháng dự án tôi đang làm có thêm chức năng lưu trữ file theo cấu trúc thư mục, do chưa có kinh nghiệm nên lúc thiết kế database tôi cũng nghĩ chắc chỉ cần parent_id là đủ. Lúc đầu thì các yêu cầu không quá khó khăn với thiết kế database như trên thì có thể giải quyết ổn cả, như với ...

Trịnh Tiến Mạnh viết 15:01 ngày 12/08/2018
0