كتابة XML من بيثون: تعادل بيثون من صافي XmlTextWriter؟

StackOverflow https://stackoverflow.com/questions/1022429

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي بعض التعليمات البرمجية و IronPython التي تستفيد من XmlTextWriter الذي يتيح لي الفرصة لكتابة التعليمات البرمجية مثل

self.writer = System.Xml.XmlTextWriter(filename, None)
self.writer.Formatting = Formatting.Indented
self.writer.WriteStartElement(name)
self.writer.WriteString(str(text))
self.writer.WriteEndElement()

...

self.writer.Close()

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

هل كانت مفيدة؟

المحلول

ولقد كتبت وحدة اسمه loxun لفعل ذلك: http://pypi.python.org / pypi / loxun / . تشغيله مع سي بايثون 2.5 و 2.5 جايثون، ولكن لم أحاول أبدا مع و IronPython.

والاستخدام مثال:

with open("...", "wb") as out:
  xml = XmlWriter(out)
  xml.addNamespace("xhtml", "http://www.w3.org/1999/xhtml")
  xml.startTag("xhtml:html")
  xml.startTag("xhtml:body")
  xml.text("Hello world!")
  xml.tag("xhtml:img", {"src": "smile.png", "alt": ":-)"})
  xml.endTag()
  xml.endTag()
  xml.close()

والنتيجة:

<?xml version="1.0" encoding="utf-8"?>
<xhtml:html xlmns:xhtml="http://www.w3.org/1999/xhtml">
  <xhtml:body>
    Hello world!
    <xhtml:img alt=":-)" src="smile.png" />
  </xhtml:body>
</xhtml:html>

ومن بين الميزات الأخرى، يكشف علامات missalligned أثناء الكتابة، ويستخدم API يتدفقون مع بصمة الذاكرة الصغيرة، ويدعم يونيكود ويسمح لتعطيل الطباعة جميلة.

نصائح أخرى

ولقد استعملت أبدا تنفيذ. NET كنت تتحدث عنه، ولكن يبدو الأقرب كنت ذاهب للحصول على لبايثون <لأ href = "http://docs.python.org/library/xml .sax.html "يختلط =" نوفولو noreferrer "> SAX محلل (وعلى وجه التحديد، في الطبقة XMLGenerator - بعض التعليمات البرمجية <لأ href =" http://www.xml.com/pub/a/2003/03/12/py- xml.html "يختلط =" نوفولو noreferrer "> هنا ).

وكتبت أداة لتسهيل الجيل XML من بيثون ( كود تعليمي )

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top