Latest web development tutorials

بيثون XML الاعراب

ما هو XML؟

XML يعني لغة التوصيف الموسعة(ه X tensible M arkup L anguage). يمكنك ان تتعلم من خلال هذا الموقع XML تعليمي

تم تصميم XML لنقل وتخزين البيانات.

XML هو مجموعة من القواعد لتحديد دلالات العلامات، وهذه العلامات ثيقة مقسمة إلى أجزاء كثيرة وهذه الأجزاء الكشف عن هويته.

وهي أيضا لغة الفوقية العلامات التي تحدد بناء الجملة للغة المستخدمة لتحديد نطاق محدد أخرى، الدلالي، لغة الترميز منظم.


الثعبان للتحليل XML

DOM المشترك والبرمجة XML واجهات SAX، واثنين من واجهات مختلفة مع ملفات XML الطريق، وبطبيعة الحال، واستخدام مناسبات مختلفة.

هناك ثلاث طرق الثعبان تحليل XML، SAX، DOM، وElementTree:

1.SAX (API بسيط لXML)

تحتوي المكتبة القياسية الثعبان محلل SAX، SAX مع نموذج الحدث يحركها، الناجمة عن حدث واحد في عملية تحليل XML واستدعاء دالات رد الاتصال المعرفة من قبل المستخدم للتعامل مع ملفات XML.

2.DOM (طراز كائن المستند)

يتم تحليل البيانات XML إلى شجرة في الذاكرة، وتعمل من خلال شجرة لمعالجة XML.

3.ElementTree (شجرة عنصر)

ElementTree باعتباره DOM خفيفة الوزن، مع واجهة برمجة تطبيقات مريحة وودية. توفر التعليمات البرمجية، سريع وتستهلك ذاكرة أقل.

ملاحظة: نظرا لDOM تحتاج إلى تعيين بيانات XML في شجرة الذاكرة، واحدة بطيئة، والثاني هو المزيد من استهلاك الذاكرة، SAX تدفق يقرأ ملف XML بشكل أسرع، واتخاذ الذاكرة أقل، ولكن يتطلب من المستخدم لتنفيذ الاستدعاء (معالج ).

استخدم هذا المقطع إلى movies.xml XML وثيقة المثال تنص على ما يلي:

<collection shelf="New Arrivals">
<movie title="Enemy Behind">
   <type>War, Thriller</type>
   <format>DVD</format>
   <year>2003</year>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Talk about a US-Japan war</description>
</movie>
<movie title="Transformers">
   <type>Anime, Science Fiction</type>
   <format>DVD</format>
   <year>1989</year>
   <rating>R</rating>
   <stars>8</stars>
   <description>A schientific fiction</description>
</movie>
   <movie title="Trigun">
   <type>Anime, Action</type>
   <format>DVD</format>
   <episodes>4</episodes>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Vash the Stampede!</description>
</movie>
<movie title="Ishtar">
   <type>Comedy</type>
   <format>VHS</format>
   <rating>PG</rating>
   <stars>2</stars>
   <description>Viewable boredom</description>
</movie>
</collection>

الثعبان أكس تحليل باستخدام SAX

ساكس هو API الحدث يحركها.

استخدام SAX تحليل مستند XML يتضمن جزأين: محلل ومعالج الحدث.

محلل هو المسؤول عن قراءة وثائق XML، ويرسل معالجات الأحداث الحدث، مثل تبدأ العناصر مع الحدث نهاية العنصر؛

معالج الحدث هو المسؤول عن الحدث وفقا لذلك، ونقل البيانات XML للمعالجة.

  • 1، ومعالجة الملفات الكبيرة.
  • 2، سوى جزء من محتويات الملف، أو ببساطة للحصول على معلومات محددة من ملف.
  • 3، نريد أن نبني نموذج كائن الخاصة بهم في ذلك الوقت.

استخدام ساكس xml.sax بطريقة أكس لأول مرة في وظيفة تحليل، فضلا عن xml.sax.handler كونتينثاندلير في بيثون.

كونتينثاندلير أسلوب فئة قدم

أحرف (المحتوى) طريقة

توقيت الدعوة:

من بداية السطر، قبل أن تعاني التسمية، هناك قيمة حرف، مضمون هذه السلاسل.

من التسمية، تسمية قبل اللقاء المقبل، وجود حرف، وقيمة المحتوى من هذه السلاسل.

من التسمية، قبل مواجهة فاصل الخط، وجود الأحرف، قيمة محتوى هذه السلاسل.

العلامة التجارية قد يكون بداية من العلامة، فإنه يمكن أن يكون نهاية التسمية.

startDocument) طريقة (

بدء التشغيل وثائق تسمى.

endDocument) طريقة (

عندما تصل الدعوة نهاية محلل ثيقة.

startElement (الاسم، attrs) طريقة

استدعاء اجه بداية XML العلامة، الاسم هو اسم العلامة، attrs هو القاموس علامة قيمة العقار.

endElement (اسم) طريقة

واجهت الدعوة وسم النهاية XML.


طريقة make_parser

الأسلوب التالي بإنشاء كائن محلل جديد والعوائد.

xml.sax.make_parser( [parser_list] )

المعلمة الوصف:

  • parser_list - المعلمة اختيارية، قائمة محلل

طريقة محلل

الأسلوب التالي يخلق محلل SAX وتحليل مستند XML:

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

المعلمة الوصف:

  • xmlfile - اسم ملف xml
  • كونتينثاندلير - يجب أن يكون الهدف من كونتينثاندلير
  • errorhandler - إذا تم تحديد هذه المعلمة، يجب أن يكون errorhandler كائن SAX ErrorHandler

طريقة parseString

parseString طريقة يخلق محلل XML و تحليل سلسلة أكس:

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

المعلمة الوصف:

  • xmlstring - سلسلة أكس
  • كونتينثاندلير - يجب أن يكون الهدف من كونتينثاندلير
  • errorhandler - إذا تم تحديد هذه المعلمة، يجب أن يكون errorhandler كائن SAX ErrorHandler

بيثون مثيل XML في تحليل

#!/usr/bin/python
# -*- coding: UTF-8 -*-

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 = ""

   # 元素开始事件处理
   def startElement(self, tag, attributes):
      self.CurrentData = tag
      if tag == "movie":
         print "*****Movie*****"
         title = attributes["title"]
         print "Title:", title

   # 元素结束事件处理
   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 = ""

   # 内容事件处理
   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__"):
   
   # 创建一个 XMLReader
   parser = xml.sax.make_parser()
   # turn off namepsaces
   parser.setFeature(xml.sax.handler.feature_namespaces, 0)

   # 重写 ContextHandler
   Handler = MovieHandler()
   parser.setContentHandler( Handler )
   
   parser.parse("movies.xml")

يتم تنفيذ التعليمات البرمجية أعلاه كما يلي:

*****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

وثائق API SAX كاملة يرجى الرجوع إلى ساكس واجهات برمجة التطبيقات بيثون


استخدام xml.dom تحليل XML

وثيقة نموذج كائن (وثيقة نموذج كائن، ويشار إلى DOM)، بل هو علاج الموصى بها W3C لغة التوصيف الموسعة واجهة البرمجة القياسية.

في محلل DOM تحليل مستند XML، قراءة الوثيقة بأكملها في وقت واحد، كل عناصر المستند المحفوظ في بنية شجرة في الذاكرة، ثم يمكنك استخدام DOM لتوفير وظائف مختلفة للقراءة أو تعديل هذه الوثيقة محتوى وهيكل إلى أن يتم تعديل لكتابة محتويات ملف XML.

الثعبان مع xml.dom.minidom تحليل مستند XML، والأمثلة على النحو التالي:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

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

# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse("movies.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):
   print "Root element : %s" % collection.getAttribute("shelf")

# 在集合中获取所有电影
movies = collection.getElementsByTagName("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

نتائج الإجراءات المذكورة أعلاه هي كما يلي:

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

وثائق API DOM كاملة يرجى الرجوع إلى بيثون دوم واجهات برمجة التطبيقات .