بيثون 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 كاملة يرجى الرجوع إلى بيثون دوم واجهات برمجة التطبيقات .