2012-10-13 23 views
8

Böyle XML olduğunu varsayalım:Python'da prettyprinting xml ne zaman atıfta bulunur?

<graph label="Test" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cy="http://www.cytoscape.org" xmlns="http://www.cs.rpi.edu/XGMML" directed="1"> 
    <foo>...</foo> 
</graph> 

tümü online olarak görünen tüm özellikleri ile birinci eleman adı.

from lxml import etree 
... 
def prettyPrintXml(filePath): 
    assert filePath is not None 
    parser = etree.XMLParser(resolve_entities=False, remove_blank_text=True, 
          strip_cdata=False) 
    document = etree.parse(filePath, parser) 
    print(etree.tostring(document, pretty_print=True, encoding='utf-8')) 

... ama her eleman bir satırında görünecek şekilde kullanarak:

oldukça böyle koduyla, LXML kullanarak, eleman ağacı baskı nasıl gördük.

Güzel yazıcının öğe öznitelikleri arasına yeni satırlar eklemesini söyleyen bir sihir var mıdır, örneğin çizgi uzunluğu 80 karakterden uzun olamaz?

Böyle bir şey bakmak sonucunu istiyoruz

:

<graph label="Test" 
     xmlns:dc="http://purl.org/dc/elements/1.1/" 
     xmlns:xlink="http://www.w3.org/1999/xlink" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns:cy="http://www.cytoscape.org" 
     xmlns="http://www.cs.rpi.edu/XGMML" directed="1"> 
    <foo>...</foo> 
</graph> 

ps: Ben subprocess ve

cevap

2

lxmlxmllint başvurmak istemiyoruz oldukça baskı fonksiyonu inşa etti: here's a tutorial hangi xml yazdırmanın çeşitli yollarını açıklar. Yine de, limitations (lxml'ye göre xml özelliklerinde sınırlamalar) vardır.

This stackoverflow question, güzel yazdırma xml'ye göre daha fazla veya daha az hacky çözümü ile çeşitli yanıtlara sahiptir ve sanırım en azından regexp tabanlı yanıtı gereksinimlerinize göre modelleyebilirsiniz.

Fredrik Lundh (ElementTree şöhret) ayrıca yeni satır ve girinti özelliklerine özelleştirebilirsiniz.AdWords printing xml için çok düşük seviyeli bir açıklama vardır.

İlgili konular