SORU
31 AĞUSTOS 2010, Salı


Basit bir XML dosyası oluşturma kullanarak python

Eğer basit bir XML dosyası oluşturmak için istersem seçeneklerim python nedir? (bilge Kütüphanesi)

İstediğim xml gibi görünüyor:

<root>
 <doc>
     <field1 name="blah">some value1</field1>
     <field2 name="asdfasd">some vlaue2</field2>
 </doc>

</root>

CEVAP
31 AĞUSTOS 2010, Salı


Bugünlerde en popüler (ve çok basit) seçeneği Python 2.5 standart kütüphaneye dahil edilmiştir ElementTree API.

Bunun için mevcut opsiyonlar:

  • ElementTree (Temel, ElementTree. saf-Python uygulaması 2.5 standart kütüphanenin bir parçası)
  • cElementTree (ElementTree. Optimize edilmiş C uygulaması Ayrıca 2.5 standart kütüphanede sunulan)
  • (Libxml2. Dayalı LXML Fazla bir ElementTree API de XPath zengin bir üst, CSS Seçiciler, ve daha fazla)

İşte örnek belge-stdlib cElementTree: kullanarak oluşturmak için nasıl bir örnek

import xml.etree.cElementTree as ET

root = ET.Element("root")
doc = ET.SubElement(root, "doc")

ET.SubElement(doc, "field1", name="blah").text = "some value1"
ET.SubElement(doc, "field2", name="asdfasd").text = "some vlaue2"

tree = ET.ElementTree(root)
tree.write("filename.xml")

Test ettik ve o inşaat, ama boşluk önemli değil sanıyorum. "Girinti ve bunu nasıl bakarım, bana da haber ver. prettyprint ihtiyacınız varsa (LXML-belirli bir seçenek olabilir. Stdlib uygulanması çok kullanın) bilmiyorum

Daha fazla okuma için, burada bazı yararlı bağlantılar

Bir son not da cElementTree veya LXML olmalı yeterince hızlı için tüm ihtiyaçlarını (her ikisi de optimize C kodu), ama bu olay sen bu durumda ihtiyaç için dışarı sıkmak her geçen biraz performans, kriterler üzerinde LXML site belirten:

  • LXML açıkça (üreten XML seri hale getirilirken için kazanır
  • Ayrıştırma için yan etkisi uygulamak uygun üst geçişi, LXML olarak biraz cElementTree daha yavaş.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008