Các loại trình phân tích cú pháp XML với các ví dụ – trình phân tích cú pháp xml là gì

Hướng dẫn về Trình phân tích cú pháp XML. Ở đây chúng ta cũng thảo luận về cách thức hoạt động của trình phân tích cú pháp xml? cùng với các ví dụ và triển khai mã của nó.

Bạn đang xem : trình phân tích cú pháp xml là gì

Trình phân tích cú pháp XML

Định nghĩa về trình phân tích cú pháp XML

Trình phân tích cú pháp XML còn được gọi là Bộ xử lý XML được định nghĩa là việc tách thông tin thành một số phần thành phần có nghĩa là đọc tệp XML và lưu trữ tất cả các chức năng có sẵn trong bộ nhớ vào phần còn lại của mã chương trình. Trình phân tích cú pháp nhằm mục đích kiểm tra cú pháp của một tệp được xác định rõ và nó được sử dụng toàn bộ trong phần mềm. Nếu người dùng chỉ cần sao chép một tệp XML, thì mỗi chương trình phải gọi trình phân tích cú pháp để đọc XML. Trình phân tích cú pháp đọc tài liệu và phân tích cấu trúc của tài liệu và thuộc tính dữ liệu.

Trình phân tích cú pháp XML hoạt động như thế nào?

Công việc chính của trình phân tích cú pháp XML là truy cập hoặc sửa đổi dữ liệu trong tài liệu. Trình phân tích cú pháp chứa các gói phần mềm đã cài đặt để các ứng dụng khách giao tiếp và cũng thực hiện quá trình xác nhận tài liệu XML. Ở đây các bộ phận thành phần được so sánh với DTD hoặc mẫu lược đồ để kiểm tra. Nó kích hoạt sự kiện khi nó tìm thấy các thẻ mở và đóng trong một tệp trong khi phân tích cú pháp từng dòng. Trình phân tích cú pháp bao gồm hai phần: lexer và parser. Một lexer lấy các ký tự đầu vào từ tệp và tạo ra các mã thông báo như (& lt ;, & gt ;, và tên thẻ). Trình phân tích cú pháp lấy mã thông báo này và xây dựng cú pháp dựa trên cây tương ứng với ngữ pháp Với DOM, toàn bộ tài liệu được đọc, trong khi trong trường hợp trình phân tích cú pháp SAX đọc từng nút và ném các sự kiện phân tích cú pháp.

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, Kiểm tra phần mềm & amp; những người khác

Quy trình phân tích cú pháp XML

Hình: Quy trình phân tích cú pháp XML

Trình phân tích cú pháp có thể được phân loại là xác thực và không xác thực

  • Trình phân tích cú pháp xác thực: Nó cần một Khai báo loại tài liệu để phân tích cú pháp và đưa ra lỗi nếu tài liệu tương ứng không khớp với DTD và các ràng buộc.
  • Không xác thực: Trình phân tích cú pháp này loại bỏ DTD và trình phân tích cú pháp kiểm tra tài liệu được định dạng tốt.

Các loại trình phân tích cú pháp XML với các ví dụ

Phần này nói về các loại trình phân tích cú pháp khác nhau được sử dụng gần đây để phân tích cú pháp tài liệu XML. Đó là:

  1. Trình phân tích cú pháp DOM
  2. Trình phân tích cú pháp SAX
  3. Trình phân tích cú pháp JDOM
  4. trình phân tích cú pháp stAX
  5. Trình phân tích cú pháp Xpath
Xem Thêm  Cách thêm ngày vào ngày trong JavaScript - thêm ngày vào ngày js

Loại quan trọng nhất là DOM và SAX được giải thích chi tiết trong bài viết này.

1. Trình phân tích cú pháp DOM (Dựa trên cây)

Mô hình đối tượng tài liệu là một tiêu chuẩn W3C và chuyển đổi tài liệu XML được phân tích cú pháp thành một tập hợp các đối tượng và sử dụng API DOM. Nó bao gồm một tập hợp các nút và được liên kết với các nút khác trong cây. DOM dễ sử dụng hơn nhiều vì quá trình sắp xếp và tìm kiếm được thực hiện nhanh hơn. Trong trình phân tích cú pháp DOM, nội dung của tệp XML được sửa đổi với Node và Node List. Các bước liên quan đến phân tích cú pháp với java:

  • Nhận các đối tượng của trình tạo tài liệu
  • Lấy tài liệu XML làm đầu vào, phân tích cú pháp và trả về lớp.
  • Nhận các giá trị của id đầu vào thông qua các thuộc tính và phần tử con.
  • Hiển thị kết quả.

Đầu tiên là tệp XML tạo ra các giá trị sẽ được phân tích cú pháp và các đối tượng java được tạo tự động.

Ví dụ

new.xml

& lt;? xml version = "1.0"? & gt;
& lt; cửa hàng & gt;
& lt; siêu thị & gt;
& lt; sid & gt; 201 & lt; / sid & gt;
& lt; sname & gt; sparc & lt; / sname & gt;
& lt; sản phẩm & gt; hàng tạp hóa & lt; / product & gt;
& lt; chi nhánh & gt; hai & lt; / branch & gt;
& lt; vị trí & gt; new york & lt; / location & gt;
& lt; / siêu thị & gt;
& lt; siêu thị & gt;
& lt; sid & gt; 540 & lt; / sid & gt;
& lt; sname & gt; giỏ lớn & lt; / sname & gt;
& lt; sản phẩm & gt; hàng tạp hóa & lt; / product & gt;
& lt; chi nhánh & gt; bảy & lt; / chi nhánh & gt;
& lt; vị trí & gt; Ấn Độ & lt; / vị trí & gt;
& lt; / siêu thị & gt;
& lt; siêu thị & gt;
& lt; sid & gt; 301 & lt; / sid & gt;
& lt; sname & gt; Wallmart & lt; / sname & gt;
& lt; sản phẩm & gt; hàng tạp hóa & lt; / product & gt;
& lt; chi nhánh & gt; mười lăm & lt; / chi nhánh & gt;
& lt; vị trí & gt; Pháp & lt; / location & gt;
& lt; / siêu thị & gt;
& lt; / cửa hàng & gt;

Read.java

nhập javax.xml.parsers.DocumentBuilderFactory;
nhập javax.xml.parsers.DocumentBuilder;
nhập org.w3c.dom.Document;
nhập org.w3c.dom.NodeList;
nhập org.w3c.dom.Node;
nhập org.w3c.dom.Element;
nhập java.io.File;
lớp công cộng Đọc
{
public static void main (String argv [])
{
thử
{
File file = new File ("C: \\ Program Files \\ Java \\ jdk-13.0.1 \\ par \\ new.xml");
DocumentBuilderFactory docb = DocumentBuilderFactory.newInstance ();
DocumentBuilder dbu = docb.newDocumentBuilder ();
Tài liệu dt = dbu.parse (tệp);
dt.getDocumentElement (). normalize ();
System.out.println ("Gốc:" + dt.getDocumentElement (). GetNodeName ());
NodeList nd = dt.getElementsByTagName ("siêu thị");
for (int i = 0; i & lt; nd.getLength (); i ++)
{
Node node = nd.item (i);
System.out.println ("\ nNodeName:" + node.getNodeName ());
if (node.getNodeType () == Node.ELEMENT_NODE) ​​
{
Nút phần tử el = (Phần tử);
System.out.println ("siêu thị sid:" + el.getElementsByTagName ("sid"). Item (0) .getTextContent ());
System.out.println ("sname:" + el.getElementsByTagName ("sname"). Item (0) .getTextContent ());
System.out.println ("product:" + el.getElementsByTagName ("product"). Item (0) .getTextContent ());
System.out.println ("branch:" + el.getElementsByTagName ("branch"). Item (0) .getTextContent ());
System.out.println ("vị trí:" + el.getElementsByTagName ("vị trí"). Item (0) .getTextContent ());
}
}
}
bắt (Ngoại lệ e)
{
e.printStackTrace ();
}
}
}

Và đây là Đầu ra được hiển thị cho Tệp XML. Lưu tệp XML và java trong cùng một thư mục trong khi thực thi. Trong bài viết này, tôi đã sử dụng java-jdk- 13.0.1 bằng cách sử dụng dấu nhắc lệnh. Lưu thư mục tương ứng vào bất kỳ ổ đĩa nào và thực hiện theo đường dẫn đã đặt.

Xem Thêm  Nhấp đúp vào Trình tải xuống hình ảnh: Tiện ích mở rộng để Tải xuống Ảnh từ Internet - tải xuống hình ảnh khi nhấp chuột

Đầu ra:

2. Trình phân tích cú pháp SAX

SAX là API đơn giản cho XML và có nghĩa là Push Parseral cũng được coi là Trình phân tích cú pháp XML hướng dòng. nó được sử dụng trong trường hợp các ứng dụng hiệu suất cao như tệp XML quá lớn và đi kèm với tiêu chuẩn dựa trên cộng đồng và yêu cầu ít bộ nhớ hơn. Nhiệm vụ chính là đọc tệp XML và tạo một sự kiện để thực hiện cuộc gọi chức năng sử dụng các quy trình gọi lại. Hoạt động của trình phân tích cú pháp này giống như một phần của trình xử lý Sự kiện của java. cần phải đăng ký trình xử lý để phân tích cú pháp tài liệu để chuyển giao các sự kiện khác nhau. SAX Parser sử dụng ba phương thức startElement (), endElement (), character ().

  • startElement (): Được sử dụng để xác định phần tử, phần tử bắt đầu được xác định.
  • endElement (): Để dừng thẻ Siêu thị trong ví dụ.
  • character (): Được sử dụng để xác định ký tự trong nút

Phần tiếp theo hiển thị việc triển khai phân tích cú pháp bằng SAX với java. Ở đây chúng tôi có tệp XML new.xml để phân tích cú pháp và tạo danh sách đối tượng siêu thị.

Tệp xml là cùng một tệp được sử dụng trong DOM Parser new.xml và bước tiếp theo tạo tệp Rsax.java

Ví dụ

Rsax.java

nhập javax.xml.parsers.SAXParser;
nhập javax.xml.parsers.SAXParserFactory;
nhập org.xml.sax.Attributes;
nhập org.xml.sax.SAXException;
nhập org.xml.sax.helpers.DefaultHandler;
Rsax lớp công khai
{
public static void main (String args [])
{
thử
{
Nhà máy SAXParserFactory = SAXParserFactory.newInstance ();
SAXParsersaxParser = factory.newSAXParser ();
Trình xử lý DefaultHandler = new DefaultHandler ()
{
booleansid = false;
booleansname = false;
boolean product = false;
boolean branch = false;
boolean location = false;
public void startElement (String sg, String pp, String q, Attributes a) ném SAXException
{
System.out.println ("Nút bắt đầu:" + q);
if (q.equalsIgnoreCase ("SID"))
{
sid = true;
}
if (q.equalsIgnoreCase ("SNAME"))
{
sname = true;
}
if (q.equalsIgnoreCase ("PRODUCT"))
{
product = true;
}
if (q.equalsIgnoreCase ("CHI NHÁNH"))
{
nhánh = true;
}
if (q.equalsIgnoreCase ("LOCATION"))
{
vị trí = true;
}
}
public void endElement (String u, String l, String qNa) ném SAXException
{
System.out.println ("Nút cuối cùng:" + qNa);
}
các ký tự void chung (char chr [], int st, int len) ném SAXException
{
if (sid)
{
System.out.println ("SID:" + new String (chr, st, len));
sid = false;
}
if (sname)
{
System.out.println ("Tên cửa hàng:" + chuỗi mới (chr, st, len));
sname = false;
}
nếu (sản phẩm)
{
System.out.println ("Sản phẩm có sẵn:" + chuỗi mới (chr, st, len));
product = false;
}
if (chi nhánh)
{
System.out.println ("Số nhánh:" + new String (chr, st, len));
nhánh = false;
}
nếu (vị trí)
{
System.out.println ("Địa chỉ:" + new String (chr, st, len));
vị trí = false;
}
}
};
saxParser.parse ("C: \\ Program Files \\ Java \\ jdk-13.0.1 \\ par \\ new.xml", trình xử lý);
}
catch (Exception ex)
{
ex.printStackTrace ();
}
}
}

Đầu ra:

Kết luận

Do đó, chúng tôi đã khám phá ra cách sử dụng trình phân tích cú pháp XML trong Java với các API mạnh mẽ trong ứng dụng. Ngoài ra, chúng tôi đã thấy việc triển khai hai trình phân tích cú pháp sử dụng java. Khi so sánh với DOM, trình phân tích cú pháp sax sử dụng kích thước tùy ý để phân tích cú pháp trong khi DOM yêu cầu bộ nhớ khả dụng để tải tài liệu hoàn chỉnh. Và trình phân tích cú pháp khác nhau dựa trên hiệu suất.

Xem Thêm  SQL Where - Ví dụ về mệnh đề - chọn câu lệnh trong mệnh đề where sql

Các bài báo được đề xuất

Đây là hướng dẫn về Trình phân tích cú pháp XML. Ở đây chúng ta cũng thảo luận về cách thức hoạt động của trình phân tích cú pháp xml? cùng với các ví dụ và triển khai mã của nó. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

0

Chia sẻ

Chia sẻ


Xem thêm những thông tin liên quan đến chủ đề trình phân tích cú pháp xml là gì

LT Android – Xử lý sự kiện OnClick XML

alt

  • Tác giả: Tin học TiiL
  • Ngày đăng: 2022-06-21
  • Đánh giá: 4 ⭐ ( 5236 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tiếp bài layout tuyến tính với các phép toán Cộng Trừ Nhân Chia, video ghi lại hướng dẫn Định nghĩa hàm xử lý ờ tệp Java và Khai báo hàm đó ở tệp Layout XML qua thuộc tính android:onClick=”Hàm xử lý”

Chi tiết bài học 23.Hướng dẫn phân tích cú pháp XML

  • Tác giả: vimentor.com
  • Đánh giá: 4 ⭐ ( 7056 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vimentor chi tiết bài học Hướng dẫn phân tích cú pháp XML: Ví dụ đọc tệp xml (Minidom, ElementTree)

Đọc XML trong Java

  • Tác giả: viettuts.vn
  • Đánh giá: 4 ⭐ ( 4591 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Phân tích (Parser) – Đọc XML trong Java, Phân tích cú pháp XML đề cập đến việc duyệt qua một tài liệu XML để truy cập hoặc sửa đổi dữ liệu. Trình DOM, SAX

XML: Bài 1.4. Cú pháp XML

  • Tác giả: v1study.com
  • Đánh giá: 5 ⭐ ( 5473 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài học này, Cú pháp XML, bạn sẽ học cách: Nêu và mô tả việc sử dụng các chú thích và hướng dẫn xử lý trong XML. Phân loại dữ liệu ký tự được ghi gi

Tìm hiểu cấu trúc và cú pháp của XML

  • Tác giả: tapchimeovat.com
  • Đánh giá: 5 ⭐ ( 1285 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Tôi nên sử dụng trình phân tích cú pháp XML nào trong C ++? [đóng cửa]

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 5941 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Cũng giống như với các thùng chứa thư viện tiêu chuẩn, thư viện nào bạn nên…

Apache Xerces – Trình phân tích cú pháp XML

  • Tác giả: knews.vip
  • Đánh giá: 5 ⭐ ( 8898 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Apache Xerces2 là gì? Xerces2 là một bộ xử lý dựa trên Java và cung cấp các giao diện và triển khai tiêu chuẩn để tuân theo các tiêu chuẩn API phân tích cú pháp XML – Mô hình đối tượng tài liệu (DOM) mức 3 API đơn giản cho XML (SAX) 2.0.2 API truyền trực tuyến cho API sự…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình