使用Elementtree对XML树所做的更改不会更新

时间:2018-07-05 20:54:58

标签: python xml python-3.x elementtree

我试图将子元素插入父元素,但是由于某些原因,我无法管理树以写入包含刚创建的子元素的文件。有人可以让我知道我在想什么吗?

这就是我所拥有的

<text>
  <p>
  </p>
  <p>
  </p>
</text>

这就是我所需要的

<text>
  <p>
    <s>
    </s>
  </p>


  <p>
    <s>
    </s>
  </p>
</text>

tree = et.parse('/Users/missogra/Desktop/test/s_tagging/1.txt')
root = tree.getroot()
for element in root:
    if element.tag == 'p':
        p = et.Element("p")
        child = et.SubElement(p, "s" )
# How to update the new root from here?

1 个答案:

答案 0 :(得分:1)

问题是此代码

p = et.Element("p")
child = et.SubElement(p, "s" )

正在创建一个新的<p>元素,该元素不属于树,并为其添加一个子元素。树本身保持不变。

将新的子元素附加到您在树中找到的<p>元素上。

>>> for elem in root:
...     if elem.tag == 'p':
...         ET.SubElement(elem, 's')
... 
<Element 's' at 0x7f7810b24e58>
<Element 's' at 0x7f780ffdf4f8>

>>> ET.tostring(root)
b'<text><p><s /></p><p><s /></p></text>'