[英]lxml Create XML fragment with no root element?
是否可以使用lxml(或內置etree庫)創建一個表示xml片段的對象,但包含兩個(或更多)不相交的樹(即每個樹都有自己獨立的根,但它們沒有共同的祖先)?
也就是說,是否有任何可以代表以下內容而不創建另一個元素來保存它們:
<tree id="A"><anotherelement/></tree>
<tree id="B"><yetanotherelement/></tree>
我在lxml文檔中看不到任何可以允許的內容,而stackoverflow似乎沒有任何直接的東西。
這里的用例是我以編程方式生成xml,並將片段組裝到一個文檔中進行輸出。 我想要一個我不需要迭代/特殊情況的對象,只需傳遞給lxml方法就好像它是一個合適的樹。
(我知道這些片段本身並不是一個完整而正確的xml文檔;我想在組裝之前將中間產品存儲到這樣的文檔中)。
是的, lxml.html
包中有這樣的功能,它叫做fragment_fromstring
或fragments_fromstring
,但在大多數情況下,html解析器也能很好地處理xml:
from lxml import etree, html
xml = """
<tree id="A"><anotherelement/></tree>
<tree id="B"><yetanotherelement/></tree>
"""
fragments = html.fragments_fromstring(xml)
root = etree.Element("root")
for f in fragments:
root.append(f)
print etree.tostring(root, pretty_print=True)
輸出:
<root>
<tree id="A">
<anotherelement/>
</tree>
<tree id="B">
<yetanotherelement/>
</tree>
</root>
如果你看看幕后發生了什么 ,如果你對其他結果不滿意的話,使用xml解析器做同樣的事情可能不會太困難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.