Python 代码,用于根据父标记属性值在深度处插入 XML 标记



我正在解析以下XML文件

使用 xml.etree.ElementTree:

<main>
    <stream id="1" name="some">
        <inner id="500">
              <sub-inner>
                 <inside> 500 </inside>
              </sub-inner>
        </inner>
    </stream>
    <stream id="2" name="some">
        <inner id="500">
              <sub-inner>
                 <inside> 500 </inside>
              </sub-inner>
        </inner>
    </stream>
</main>

如何将 200 元素插入到 标签中

尝试使用Python lxml包执行此操作:因为 lxml 支持在 XML 上触发 xPATH。

from lxml import etree
tree = etree.parse("C:\abc.xml")
root = tree.getroot()
elem = tree.xpath("//stream[@id='2']//sub-inner")[0]
elem.append( etree.Element("outer") )
elem1 = tree.xpath("//stream[@id='2']//sub-inner//outer")[0]
elem1.text = "200"

它将在sub-inner stream id="2" 的位置附加新元素outer

输出将为:

<main>
    <stream id="1" name="some">
        <inner id="500">
              <sub-inner>
                 <inside> 500 </inside>
              </sub-inner>
        </inner>
    </stream>
    <stream id="2" name="some">
        <inner id="500">
              <sub-inner>
                 <inside> 500 </inside>
                 <outer>200</outer>
              </sub-inner>
        </inner>
    </stream>
</main>

最新更新