Hướng dẫn does xml work with python? - xml có hoạt động với python không?


XML là ngôn ngữ nguồn mở di động, cho phép các lập trình viên phát triển các ứng dụng có thể được đọc bởi các ứng dụng khác, bất kể hệ điều hành và/hoặc ngôn ngữ phát triển.

XML là gì?

Ngôn ngữ đánh dấu có thể mở rộng (XML) là một ngôn ngữ đánh dấu giống như HTML hoặc SGML. Điều này được đề xuất bởi World Wide Web Consortium và có sẵn như một tiêu chuẩn mở.

XML cực kỳ hữu ích để theo dõi lượng dữ liệu nhỏ đến trung bình mà không yêu cầu xương sống dựa trên SQL.

Kiến trúc phân tích cú pháp XML và API

Thư viện tiêu chuẩn Python cung cấp một bộ giao diện tối thiểu nhưng hữu ích để hoạt động với XML.

Hai API cơ bản và được sử dụng rộng nhất cho dữ liệu XML là các giao diện Sax và DOM.

  • API đơn giản cho XML (SAX) - Tại đây, bạn đăng ký các cuộc gọi lại cho các sự kiện quan tâm và sau đó để trình phân tích cú pháp tiến hành thông qua tài liệu. Điều này rất hữu ích khi tài liệu của bạn lớn hoặc bạn có giới hạn bộ nhớ, nó phân tích tệp vì nó đọc nó từ đĩa và toàn bộ tệp không bao giờ được lưu trữ trong bộ nhớ. − Here, you register callbacks for events of interest and then let the parser proceed through the document. This is useful when your documents are large or you have memory limitations, it parses the file as it reads it from disk and the entire file is never stored in memory.

  • API mô hình đối tượng tài liệu (DOM)-Đây là khuyến nghị của tập đoàn web trên toàn thế giới trong đó toàn bộ tệp được đọc vào bộ nhớ và được lưu trữ trong một hình thức phân cấp (dựa trên cây) để thể hiện tất cả các tính năng của tài liệu XML. − This is a World Wide Web Consortium recommendation wherein the entire file is read into memory and stored in a hierarchical (tree-based) form to represent all the features of an XML document.

Sax rõ ràng không thể xử lý thông tin nhanh như DOM có thể khi làm việc với các tệp lớn. Mặt khác, sử dụng DOM độc quyền có thể thực sự tiêu diệt tài nguyên của bạn, đặc biệt là nếu được sử dụng trên rất nhiều tệp nhỏ.

SAX chỉ đọc, trong khi DOM cho phép các thay đổi đối với tệp XML. Vì hai API khác nhau này bổ sung cho nhau theo nghĩa đen, không có lý do gì bạn không thể sử dụng cả hai cho các dự án lớn.

Đối với tất cả các ví dụ về mã XML của chúng tôi, hãy sử dụng một bộ phim XML đơn giản.xml làm đầu vào -



   War, Thriller
   DVD
   2003
   PG
   10
   Talk about a US-Japan war


   Anime, Science Fiction
   DVD
   1989
   R
   8
   A schientific fiction

   
   Anime, Action
   DVD
   4
   PG
   10
   Vash the Stampede!


   Comedy
   VHS
   PG
   2
   Viewable boredom


Phân tích cú pháp XML với API Sax

SAX là một giao diện tiêu chuẩn cho phân tích cú pháp XML theo hướng sự kiện. Phân tích XML với Sax thường yêu cầu bạn tạo ContentHandler của riêng mình bằng cách phân lớp XML.SAX.Contenthandler.

ContentHandler của bạn xử lý các thẻ và thuộc tính cụ thể của (các) hương vị của bạn của XML. Một đối tượng ContentHandler cung cấp các phương pháp để xử lý các sự kiện phân tích cú pháp khác nhau. Trình phân tích cú pháp sở hữu của nó gọi các phương thức ContentHandler khi nó phân tích tệp XML.

Các phương thức StartDocument và EndDocument được gọi là bắt đầu và kết thúc của tệp XML. Các ký tự phương thức (văn bản) được truyền dữ liệu ký tự của tệp XML thông qua văn bản tham số.

ContentHandler được gọi vào đầu và kết thúc của mỗi yếu tố. Nếu trình phân tích cú pháp không ở chế độ không gian tên, các phương thức bắt đầu (thẻ, thuộc tính) và endelement (TAG) được gọi; Mặt khác, các phương thức tương ứng bắt đầu và endelementns được gọi. Ở đây, thẻ là thẻ phần tử và các thuộc tính là một đối tượng thuộc tính.

Dưới đây là những phương pháp quan trọng khác để hiểu trước khi tiến hành -

Phương pháp make_parser

Phương thức sau tạo một đối tượng phân tích cú pháp mới và trả về nó. Đối tượng phân tích cú pháp được tạo sẽ thuộc loại trình phân tích cú pháp đầu tiên mà hệ thống tìm thấy.

xml.sax.make_parser( [parser_list] )

Dưới đây là chi tiết của các tham số -

  • Parser_list - Đối số tùy chọn bao gồm một danh sách các trình phân tích cú pháp để sử dụng, tất cả phải thực hiện phương thức Make_parser. − The optional argument consisting of a list of parsers to use which must all implement the make_parser method.

Phương pháp phân tích cú pháp

Phương thức sau tạo một trình phân tích cú pháp sax và sử dụng nó để phân tích tài liệu.

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

Dưới đây là chi tiết của các tham số -

  • Parser_list - Đối số tùy chọn bao gồm một danh sách các trình phân tích cú pháp để sử dụng, tất cả phải thực hiện phương thức Make_parser. − This is the name of the XML file to read from.

  • Phương pháp phân tích cú pháp − This must be a ContentHandler object.

  • Phương thức sau tạo một trình phân tích cú pháp sax và sử dụng nó để phân tích tài liệu. − If specified, errorhandler must be a SAX ErrorHandler object.

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

XMLFILE - Đây là tên của tệp XML để đọc từ.XML string.

xml.sax.parseString(xmlstring, contenthandler[, errorhandler])

Dưới đây là chi tiết của các tham số -

  • Parser_list - Đối số tùy chọn bao gồm một danh sách các trình phân tích cú pháp để sử dụng, tất cả phải thực hiện phương thức Make_parser. − This is the name of the XML string to read from.

  • Phương pháp phân tích cú pháp − This must be a ContentHandler object.

  • Phương thức sau tạo một trình phân tích cú pháp sax và sử dụng nó để phân tích tài liệu. − If specified, errorhandler must be a SAX ErrorHandler object.

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

#!/usr/bin/python

import xml.sax

class MovieHandler( xml.sax.ContentHandler ):
   def __init__(self):
      self.CurrentData = ""
      self.type = ""
      self.format = ""
      self.year = ""
      self.rating = ""
      self.stars = ""
      self.description = ""

   # Call when an element starts
   def startElement(self, tag, attributes):
      self.CurrentData = tag
      if tag == "movie":
         print "*****Movie*****"
         title = attributes["title"]
         print "Title:", title

   # Call when an elements ends
   def endElement(self, tag):
      if self.CurrentData == "type":
         print "Type:", self.type
      elif self.CurrentData == "format":
         print "Format:", self.format
      elif self.CurrentData == "year":
         print "Year:", self.year
      elif self.CurrentData == "rating":
         print "Rating:", self.rating
      elif self.CurrentData == "stars":
         print "Stars:", self.stars
      elif self.CurrentData == "description":
         print "Description:", self.description
      self.CurrentData = ""

   # Call when a character is read
   def characters(self, content):
      if self.CurrentData == "type":
         self.type = content
      elif self.CurrentData == "format":
         self.format = content
      elif self.CurrentData == "year":
         self.year = content
      elif self.CurrentData == "rating":
         self.rating = content
      elif self.CurrentData == "stars":
         self.stars = content
      elif self.CurrentData == "description":
         self.description = content
  
if ( __name__ == "__main__"):
   
   # create an XMLReader
   parser = xml.sax.make_parser()
   # turn off namepsaces
   parser.setFeature(xml.sax.handler.feature_namespaces, 0)

   # override the default ContextHandler
   Handler = MovieHandler()
   parser.setContentHandler( Handler )
   
   parser.parse("movies.xml")

XMLFILE - Đây là tên của tệp XML để đọc từ.

*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Stars: 10
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Stars: 2
Description: Viewable boredom

ContentHandler - Đây phải là một đối tượng ContentHandler.

ErrorHandler - Nếu được chỉ định, ErrorHandler phải là đối tượng Sax ErrorHandler.

Phương pháp Parsestring

Có thêm một phương thức để tạo trình phân tích cú pháp sax và phân tích chuỗi XML được chỉ định.

XMLString - Đây là tên của chuỗi XML để đọc từ.

Thí dụ

#!/usr/bin/python

from xml.dom.minidom import parse
import xml.dom.minidom

# Open XML document using minidom parser
DOMTree = xml.dom.minidom.parse("movies.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):
   print "Root element : %s" % collection.getAttribute("shelf")

# Get all the movies in the collection
movies = collection.getElementsByTagName("movie")

# Print detail of each movie.
for movie in movies:
   print "*****Movie*****"
   if movie.hasAttribute("title"):
      print "Title: %s" % movie.getAttribute("title")

   type = movie.getElementsByTagName('type')[0]
   print "Type: %s" % type.childNodes[0].data
   format = movie.getElementsByTagName('format')[0]
   print "Format: %s" % format.childNodes[0].data
   rating = movie.getElementsByTagName('rating')[0]
   print "Rating: %s" % rating.childNodes[0].data
   description = movie.getElementsByTagName('description')[0]
   print "Description: %s" % description.childNodes[0].data

Điều này sẽ tạo ra kết quả sau -

Root element : New Arrivals
*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Rating: PG
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Rating: R
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Description: Viewable boredom

Để biết chi tiết đầy đủ trên tài liệu API DOM, vui lòng tham khảo API Python DOM tiêu chuẩn.

Bạn có thể sử dụng XML với Python không?

Python cho phép bạn phân tích và sửa đổi các tài liệu XML.Để phân tích tài liệu XML, bạn cần có toàn bộ tài liệu XML trong bộ nhớ.. In order to parse XML document, you need to have the entire XML document in memory.

Làm cách nào để chạy mã XML trong Python?

Để đọc một tệp XML bằng ElementTree, trước tiên, chúng tôi nhập lớp ElementTree được tìm thấy bên trong thư viện XML, dưới tên ET (thông tin chung).Sau đó chuyển tên tệp của tệp XML cho ElementTree.Phương thức Parse (), để cho phép phân tích tệp XML của chúng tôi.Sau đó, nhận được gốc (thẻ cha) của tệp XML của chúng tôi bằng GetRoot ().

Làm thế nào bao gồm tệp XML trong Python?

Tạo tài liệu XML bằng Python trước, chúng tôi nhập Minidom để sử dụng XML.Dom.Sau đó, chúng tôi tạo phần tử gốc và nối nó vào XML.Sau đó, tạo ra một sản phẩm con của cha mẹ là chuyên viên máy tính cho các chuyên viên máy tính.import minidom for using xml. dom . Then we create the root element and append it to the XML. After that creating a child product of parent namely Geeks for Geeks.

Xử lý XML trong Python là gì?

XML là ngôn ngữ nguồn mở di động, cho phép các lập trình viên phát triển các ứng dụng có thể được đọc bởi các ứng dụng khác, bất kể hệ điều hành và/hoặc ngôn ngữ phát triển.a portable, open source language that allows programmers to develop applications that can be read by other applications, regardless of operating system and/or developmental language.