在lxml中插入一个新的根元素

huangapple go评论63阅读模式
英文:

Inserting a new root element in lxml

问题

我有一个XML文件(不一定是HTML):

<div>
   <p>...</p>
</div>

我希望插入一个新的html根元素,使其变为:

<html>
  <div>
   <p>...</p>
  </div>
</html>

(稍后我会添加headbody)。是否有一个简单的命令可以在不创建新树和复制元素的情况下将新元素html插入div的新父级?

英文:

I have an xml file (not necessarily html):

<div>
   <p>...</p>
</div>

and I wish to insert a new html root element to give

<html>
  <div>
   <p>...</p>
  </div>
</html>

(I will add head, body later.) Is there a simple command to insert a new element html as new parent of div without creating a new tree and copying elements?

答案1

得分: 1

当你创建一个 html 元素并将 div 放入其中时:

>>> import lxml.etree as et
>>> t = et.fromstring("<div><p>...</p></div>")
<Element div>
>>> html = et.Element("html")
<Element html>
>>> html.append(t)
>>> et.tostring(html)
b'<html><div><p>...</p></div></html>'
>>> 
英文:

Sure; just create a html element and add the div inside it:

&gt;&gt;&gt; import lxml.etree as et
&gt;&gt;&gt; t = et.fromstring(&quot;&lt;div&gt;&lt;p&gt;...&lt;/p&gt;&lt;/div&gt;&quot;)
&lt;Element div&gt;
&gt;&gt;&gt; html = et.Element(&quot;html&quot;)
&lt;Element html&gt;
&gt;&gt;&gt; html.append(t)
&gt;&gt;&gt; et.tostring(html)
b&#39;&lt;html&gt;&lt;div&gt;&lt;p&gt;...&lt;/p&gt;&lt;/div&gt;&lt;/html&gt;&#39;
&gt;&gt;&gt;

huangapple
  • 本文由 发表于 2023年3月7日 19:23:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/75661356.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定