【问题标题】:Finding end tags with Python ElementTree XML API使用 Python ElementTree XML API 查找结束标签
【发布时间】:2014-09-15 10:14:23
【问题描述】:

在解析一些 XML 时,我想确定是否遇到了特定元素的结束标记。这可以通过 ElementTree XML API 实现吗?

示例 XML:

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

例如:在上面的XML中访问&lt;file name="b2"&gt;之前,我希望能够知道已经遇到了一个&lt;/folder&gt;。

【问题讨论】:

  • 你的意思是当你遇到 的 '' 时你想知道?
  • 不特定于 。但只是文件夹>。例如:在 VC++ 中,我们将节点类型设置为“结束节点”来确定它是否是结束标记。

标签: python python-2.7 xml-parsing elementtree


【解决方案1】:

只需使用 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,这意味着你的文件夹标签不完整。

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

【讨论】:

  • 您好,感谢您提供解决方案,但我面临的问题有些不同。我得到的 XML 是完全正确的,我想知道结束标签,以便为下一个文件标签做出某些决定。我反正使用递归来解决问题,但仍然想知道是否可以确定标签是否为关闭标签?
猜你喜欢
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2021-09-01
  • 2016-09-17
  • 1970-01-01
相关资源
最近更新 更多