使用Python ElementTree XML API查找结束标签

1 投票
1 回答
1374 浏览
提问于 2025-04-18 14:33

在解析一些XML文件时,我想知道我是否遇到了某个特定元素的结束标签。这可以通过ElementTree XML API来实现吗?

示例XML:

<data>
  <folder name="a">
  <folder name="b">
    <file name="a1">
    </file>
  </folder>
  <file name="b2">
  </file>
  </folder>
</data>

举个例子:在访问上面XML中的<file name="b2">之前,我想先确认一下是否已经遇到了</folder>这个结束标签。

1 个回答

0

只需要使用 ElementTree.fromstring() 方法就可以了。

假设你的 XML 文件长这样:

xml1.xml

<?xml version="1.0" encoding="UTF-8"?>
    <data>
      <folder name="a">
          <folder name="b">
            <file name="a1">
            </file>
          </folder>
      <file name="b2">
      </file>
      </folder>
    </data>

xml2.xml

<?xml version="1.0" encoding="UTF-8"?>
    <data>
      <folder name="a">
          <folder name="b">
            <file name="a1">
            </file>
          </folder>
      <file name="b2">
      </file>

    </data>

当你调用 ElementTree.fromstring(open('xml1.xml').read()) 时,它会正常完成。

但是当你调用 ElementTree.fromstring(open('xml2.xml').read()) 时,就会出现一个错误,叫做 xml.parsers.expat.ExpatError: mismatched tag,这意味着你的标签没有写完整。

如果这个回答对你有帮助,请确认一下。谢谢!

撰写回答