Sharecs.net
  • Trang chủ
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Phần Mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
No Result
View All Result
  • Trang chủ
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Phần Mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
No Result
View All Result
Sharecs.net
No Result
View All Result
Home Lập Trình Lập Trình Java Java XML Tutorial

Cách đọc file XML UTF-8 trong Java – (SAX Parser)

Nguyễn Tuấn by Nguyễn Tuấn
01/03/2022
0
0
SHARES
37
VIEWS

Bài viết này mình trình bày cách sử dụng SAX Parser để đọc hoặc phân tích cú pháp tệp XML UTF-8.

Mục Lục

  • 1 SAX Parser để phân tích cú pháp file XML UTF-8
    • 1.1 File XML chứa UTF-8 và các ký tự Trung Quốc.
    • 1.2 Ví dụ dưới đây đặt một UTF-8 mã hóa rõ ràng.
  • 2 Mã hóa ký tự trong XML và Code ( Character Encoding in XML and code )
    • 2.1 Đối với các file XML, cách tốt nhất là khai báo encoding thuộc tính.
    • 2.2 Đối với SAX Parser, chúng ta có thể đặt mã hóa thông qua XMLReader
  • 3 Các lỗi phổ biến SAX
    • 3.1 Byte 1 không hợp lệ của chuỗi UTF-8 1 byte
    • 3.2 Nội dung không được phép trong phần mở đầu
    • 3.3 Tên thực thể phải ngay sau dấu ‘&’ trong tham chiếu thực thể

SAX Parser để phân tích cú pháp file XML UTF-8

File XML chứa UTF-8 và các ký tự Trung Quốc.
<?xml version="1.0" encoding="utf-8"?>
<Company>
    <staff id="1001">
        <name>揚木金</name>
        <role>support &amp; code</role>
        <salary currency="USD">5000</salary>
        <bio><![CDATA[HTML tag <code>testing</code>]]></bio>
    </staff>
    <staff id="1002">
        <name>yflow</name>
        <role>admin</role>
        <salary currency="EUR">8000</salary>
        <bio><![CDATA[a & b]]></bio>
    </staff>
</Company>
Ví dụ dưới đây đặt một UTF-8 mã hóa rõ ràng.

Lưu ý: Đối với trình xử lý SAX PrintAllHandlerSax, hãy tham khảo bài viết này .


package com.sharecs.xml.sax;

import com.sharecs.xml.sax.handler.PrintAllHandlerSax;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class ReadXmlSaxParser {

  private static final String FILENAME = "src/main/resources/staff-unicode.xml";

  public static void main(String[] args) {

      SAXParserFactory factory = SAXParserFactory.newInstance();

      try {

          SAXParser saxParser = factory.newSAXParser();

          PrintAllHandlerSax handler = new PrintAllHandlerSax();

          XMLReader xmlReader = saxParser.getXMLReader();
          xmlReader.setContentHandler(handler);

          InputSource source = new InputSource(FILENAME);

          // explicitly set a encoding
          source.setEncoding(StandardCharsets.UTF_8.displayName());

          xmlReader.parse(source);

      } catch (ParserConfigurationException | SAXException | IOException e) {
          e.printStackTrace();
      }

  }

}

Kết quả

Start Document
Start Element : Company
Start Element : staff
Staff id : 1001
Start Element : name
End Element : name
Name : 揚木金
Start Element : role
End Element : role
Role : support & code
Start Element : salary
Currency :USD
End Element : salary
Salary : 5000
Start Element : bio
End Element : bio
Bio : HTML tag <code>testing</code>
End Element : staff
Start Element : staff
Staff id : 1002
Start Element : name
End Element : name
Name : yflow
Start Element : role
End Element : role
Role : admin
Start Element : salary
Currency :EUR
End Element : salary
Salary : 8000
Start Element : bio
End Element : bio
Bio : a & b
End Element : staff
End Element : Company
End Document

Mã hóa ký tự trong XML và Code ( Character Encoding in XML and code )

Đảm bảo rằng chúng ta đang sử dụng mã hóa chính xác để phân tích cú pháp tệp XML.

Đối với các file XML, cách tốt nhất là khai báo encoding thuộc tính.

<?xml version="1.0" encoding="character-encoding-here"?>
<Company>

</Company>

Ví dụ: bên dưới là file XML được mã hóa UTF-8.


<?xml version="1.0" encoding="utf-8"?>
<Company>

</Company>
Đối với SAX Parser, chúng ta có thể đặt mã hóa thông qua XMLReader
 SAXParserFactory factory = SAXParserFactory.newInstance();

  try {

      SAXParser saxParser = factory.newSAXParser();

      PrintAllHandlerSax handler = new PrintAllHandlerSax();

      XMLReader xmlReader = saxParser.getXMLReader();
      xmlReader.setContentHandler(handler);

      InputSource source = new InputSource(FILENAME);

      // utf-8
      source.setEncoding(StandardCharsets.UTF_8.displayName());

      // utf-16
      // source.setEncoding(StandardCharsets.UTF_16.displayName());

      // ascii
      // source.setEncoding(StandardCharsets.US_ASCII.displayName());

      xmlReader.parse(source);

  } catch (ParserConfigurationException | SAXException | IOException e) {
      e.printStackTrace();
  }

Các lỗi phổ biến SAX

Dưới đây là một số lỗi phổ biến trong phân tích cú pháp SAX XML.

Byte 1 không hợp lệ của chuỗi UTF-8 1 byte

Tệp XML chứa các ký tự UTF-8 không hợp lệ, hãy đọc phần này .

Nội dung không được phép trong phần mở đầu

Tệp XML chứa văn bản không hợp lệ hoặc BOM trước khai báo XML, hãy đọc phần này .

Tên thực thể phải ngay sau dấu ‘&’ trong tham chiếu thực thể

Đây & là một ký tự không hợp lệ trong file XML, hãy thay thế nó bằng &amp; hoặc bọc bằng CDATA chẳng hạn <![CDATA[a & b]]>

Đánh giá bài viết giúp mình nhé!
Tags: java xmlread xmlsax parserutf-8
ShareSendTweetShare

Cùng chuyên mục

Cách Đọc File XML Java ( DOM Parser )

SAX Error – Nội dung không được phép trong phần mở đầu

01/03/2022
21
Cách đọc file XML UTF-8 trong Java – (SAX Parser)

Parser SAX – Invalid Byte 1 of 1-Byte UTF-8 Sequence

26/02/2022
13
Cách đọc file XML trong Java (SAX Parser)

Cách đọc file XML trong Java (SAX Parser)

13/02/2022
97
Cách Đọc File XML Java ( DOM Parser )

Các Ví Dụ Về XML Và XSLT Của Java DOM Parser

09/02/2022
10
Subscribe
Notify of
guest
guest
0 Comments
Inline Feedbacks
View all comments

Mạng Xã Hội

Bài Viết Nổi Bật

  • 500 Câu Trắc Nghiệm Mạng Máy Tính Phần 1 Có Đáp Án

    500 Câu Trắc Nghiệm Mạng Máy Tính Phần 1 Có Đáp Án

    0 shares
    Share 0 Tweet 0
  • Bài Tập Code Python Đơn Giản Có Lời Giải – Phần 1

    1 shares
    Share 0 Tweet 0
  • 500 Câu Trắc Nghiệm Mạng Máy Tính Phần 2 Có Đáp Án

    0 shares
    Share 0 Tweet 0
  • Trắc Nghiệm Mạng Máy Tính Phần 3 Có Đáp Án

    0 shares
    Share 0 Tweet 0
  • Download Video Wallpaper Agatsuma Zenitsu – Anime Kimetsu No Yaiba

    45 shares
    Share 0 Tweet 0

Phản hồi gần đây

  • Anh Tuấn trong Ứng Dụng Thuật Toán Hồi Quy Tuyến Tính Để Chẩn Đoán Xơ Vữa Động Mạch 2021
  • Trung trong Fake Giấy Tờ Xác Minh Doanh Nghiệp Trên Facebook
  • Tài trong Fake Giấy Tờ Xác Minh Doanh Nghiệp Trên Facebook
  • trinh trong Bài Tập Lập Trình Prolog Có Lời Giải – Hệ Chuyên Gia

Bạn bè & Đối tác

Ứng dụng đặt lịch khám nha khoa Vnnice

Liên hệ quảng cáo

Email: Sharecs.net@gmail.com

Hợp tác nội dung: Sharecs rất vinh dự được mời các bạn đóng góp những sản phẩm thiết kế, thủ thuật hay những chia sẻ hữu ích… để cùng chia sẻ rộng rãi tới mọi người!

Giới Thiệu

Sharecs.net là một website/blog cá nhân, chuyên chia sẻ những kiến thức xoay quanh công nghệ như máy tính, internet, phần mềm, lập trình,... Mình hi vọng, Sharecs sẽ mang lại những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

  • Giới Thiệu & Liên Hệ
  • Chính Sách Bảo Mật

DMCA.com Protection Status Copyright © 2020 - Chia sẻ cuộc sống công nghệ by Sharecs.

No Result
View All Result
  • Trang chủ
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Phần Mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress

DMCA.com Protection Status Copyright © 2020 - Chia sẻ cuộc sống công nghệ by Sharecs.