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

时间:2014-07-24 01:48:54

标签: python python-2.7 xml-parsing elementtree

在解析某些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 :(得分: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,这意味着您的文件夹代码无法完成。

如果这回答了您的问题,请确认。谢谢!