簡體   English   中英

在python中生成xml的最簡單方法

[英]simplest way to generate xml in python

我有一個defaultdict(list)..因此,以下格式的數據結構:

1:[1,2,3,4,5]
2:[2,3,4]

我想生成以下xml

<html>
<page>
<src>1</src>
<links>
   <link>1</link>
   <link>2</link>
    ...
    <link>5</link>
</links>
</page>

<page>
<src>2</src>
<links>
   <link>2</link>
   <link>3</link>
    <link>4</link>
</links>
</page>
<html>

然后將縮進的xml寫入文件

您可以使用BeautifulSoup

from bs4 import Tag


d = {1: [1,2,3,4,5], 2: [2,3,4]}

root = Tag(name='html')
for key, values in d.iteritems():
    page = Tag(name='page')
    src = Tag(name='src')
    src.string = str(key)
    page.append(src)

    links = Tag(name='links')
    for value in values:
        link = Tag(name='link')
        link.string = str(value)
        links.append(link)

    page.append(links)
    root.append(page)

print root.prettify()

打印:

<html>
 <page>
  <src>
   1
  </src>
  <links>
   <link>
    1
   </link>
   <link>
    2
   </link>
   <link>
    3
   </link>
   <link>
    4
   </link>
   <link>
    5
   </link>
  </links>
 </page>
 <page>
  <src>
   2
  </src>
  <links>
   <link>
    2
   </link>
   <link>
    3
   </link>
   <link>
    4
   </link>
  </links>
 </page>
</html>

您還可以定義jinja2模板並進行渲染:

from jinja2 import Template


data = {1:[1,2,3,4,5], 2:[2,3,4]}

html = """<html>
    {% for key, values in data.iteritems() %}
        <page>
        <src>{{ key }}</src>
        <links>
            {% for value in values %}
               <link>{{ value }}</link>
            {% endfor %}
        </links>
        </page>
    {% endfor %}
<html>"""

template = Template(html)
print template.render(data=data)

打印:

<html>
        <page>
        <src>1</src>
        <links>
               <link>1</link>
               <link>2</link>
               <link>3</link>
               <link>4</link>
               <link>5</link>
        </links>
        </page>

        <page>
        <src>2</src>
        <links>
               <link>2</link>
               <link>3</link>
               <link>4</link>
        </links>
        </page>
<html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM