Làm cách nào để xóa các ký tự đặc biệt khỏi tệp XML trong Python?

Khi chúng tôi đọc một tệp XML và thử ghi vào một tệp XML khác, điều quan trọng là chúng tôi phải quan tâm đến các ký tự đặc biệt trong XML. Có một số ký tự dành riêng trong Java cần được chuyển đổi hoặc thoát để được coi là một chuỗi ký tự. Nếu chúng ta không thoát khỏi các ký tự đặc biệt này thì các trình phân tích cú pháp như trình phân tích cú pháp DOM hoặc SAX trong java sẽ coi chúng là các thẻ XML cụ thể trong trường hợp < và >. Ngay cả khi chúng tôi sử dụng chuyển đổi XSLT, các trình phân tích cú pháp này sẽ không thành công. Do đó, chúng ta cần thoát hoặc chuyển đổi các ký tự đặc biệt này trước khi đọc chúng dưới dạng chuỗi ký tự trong Java

Ký tự đặc biệt trong XML

Có 5 ký tự đặc biệt được sử dụng nhiều nhất trong XML cần được thoát khi được sử dụng làm Chuỗi Java

  • & — &
  • < — — >
  • ” - “
  • ‘ — '

Các ký tự đặc biệt này còn được gọi là Siêu ký tự XML. Trong quá trình thoát, chúng tôi sẽ thay thế các ký tự này bằng các chuỗi thay thế để đưa ra kết quả bằng chữ của các ký tự đặc biệt

Ví dụ

 Data Structures & Java 

// is an invalid string in java because '&' is a reserved literal 
// in XML that is used to import other XML entity. For converting this 
// to a valid String literal we need to & instead of & here.

 Data Structure & Java 

// now becomes a valid String.

Trong Java, chúng ta luôn có thể viết các hàm của riêng mình để thoát khỏi các ký tự đặc biệt XML bằng các ký tự Chuỗi tương đương của nó, nhưng chúng ta cũng có thể sử dụng thư viện Java “StringEscapeUtils” do Apache Commons cung cấp. Thư viện này cung cấp cho chúng tôi một API chung để thoát XML cho chúng tôi

When you use wizards to customize any string in your XML file, you can use the following special symbols: , &, ', ". You can also use these symbols when you are editing a query in Expert Mode or when you are manually entering SQL code into XML files between CDATA tags.

Nếu bạn đang chỉnh sửa các tệp XML của mình theo cách thủ công và câu lệnh SQL của bạn không nằm giữa các thẻ CDATA, thì không sử dụng các ký hiệu đặc biệt trong mệnh đề WHERE, vì Trình phân tích cú pháp XML sẽ đưa ra một ngoại lệ phân tích cú pháp. Thay vào đó, hãy sử dụng các chuỗi thoát sau đây để thể hiện các ký hiệu này. Số trong mỗi dãy là giá trị ASCII của ký tự đó

Ký hiệu [tên]

Trình tự thoát

< [ít hơn]

< hoặc [lớn hơn]

> hoặc  >

& [dấu và]

&

' [dấu nháy đơn hoặc trích dẫn đơn]

'

" [trích dẫn kép]

"

Ký tự không phải là ký tự chữ cái hoặc số được gọi là ký tự đặc biệt. Chúng ta nên loại bỏ tất cả các ký tự đặc biệt trong chuỗi để có thể đọc chuỗi rõ ràng và trôi chảy. Các ký tự đặc biệt không thể đọc được, vì vậy tốt nhất là loại bỏ chúng trước khi đọc

Phương thức thay thế All[] trong Java

Phương thức Java replaceAll[] của lớp String thay thế từng chuỗi con của chuỗi này khớp với biểu thức chính quy đã cho bằng chuỗi thay thế

cú pháp

Phương thức này chấp nhận hai tham số

  • biểu thức chính quy. Đó là biểu thức chính quy mà chuỗi sẽ được khớp. Nó có thể có nhiều loại khác nhau
  • thay thế. Chuỗi được thay thế cho trận đấu

Nó trả về Chuỗi kết quả. Nó ném PatternSyntaxException nếu cú ​​pháp biểu thức chính quy không hợp lệ. Phương pháp trên mang lại kết quả tương tự như biểu thức

Ví dụ xóa các ký tự đặc biệt bằng phương thức replaceAll[]

Trong ví dụ sau, phương thức removeAll[] loại bỏ tất cả các ký tự đặc biệt khỏi chuỗi và đặt một khoảng trắng vào vị trí của chúng

đầu ra

This   string   contains   special   characters  

Thí dụ

Trong ví dụ sau, chúng tôi đang xác định logic để xóa các ký tự đặc biệt khỏi chuỗi. Chúng ta biết rằng giá trị ASCII của bảng chữ cái viết hoa bắt đầu từ 65 đến 90 [A-Z] và giá trị ASCII của bảng chữ cái viết thường bắt đầu từ 97 đến 122 [a-z]. Mỗi ký tự so sánh với giá trị ASCII tương ứng của chúng. Nếu cả hai điều kiện đã chỉ định đều trả về true thì nó trả về true, ngược lại trả về false. Vòng lặp for thực hiện cho đến hết độ dài của chuỗi. Khi chuỗi đạt đến kích thước của nó, nó kết thúc thực thi và chúng ta nhận được chuỗi kết quả

Trong một số trường hợp khi sử dụng hành động Clarity XML Open Gateway [XOG] giữa các môi trường, bạn có thể gặp phải sự cố XOG trả về lỗi do các ký tự đặc biệt bên trong tệp XML đọc hoặc ghi đang được sử dụng. Làm cách nào để chúng tôi tìm thấy tất cả các ký tự đặc biệt sẽ gây ra sự cố này?

Giải pháp

Sử dụng các bước sau để sửa đổi tệp xml gặp sự cố

  1. Tạo một bản sao của tệp XML của bạn trong trường hợp bạn cần bắt đầu lại
  2. Mở tệp xml trong bất kỳ trình soạn thảo Văn bản nào hỗ trợ tính năng Tìm/Thay thế Biểu thức Chính quy
  3. Mở cửa sổ chỉnh sửa Tìm/Thay thế
  4. Chọn tùy chọn Cụm từ thông dụng
  5. Tìm thấy. [^&;. []a-zA-Z0-9" =. /> > & & Các ký tự thoát phụ thuộc vào vị trí ký tự đặc biệt được sử dụng. Các ví dụ có thể được xác thực tại Dịch vụ xác thực đánh dấu W3C.

Làm cách nào để xử lý trong phân tích cú pháp XML?

Để xử lý một ngoại lệ trong quy trình xử lý, hãy làm theo các bước sau. .
Kiểm tra nội dung của XML-CODE
Xử lý ngoại lệ một cách thích hợp
Đặt XML-CODE thành 0 để cho biết rằng bạn đã xử lý ngoại lệ
Trả lại điều khiển cho trình phân tích cú pháp

Chủ Đề